Android 返回前台时的DialogFragment覆盖样式
我被困在尝试覆盖DialogFragment中的样式时,该片段在至少一次背景化后显示 以下是相关代码: MyAndroid 返回前台时的DialogFragment覆盖样式,android,android-fragments,Android,Android Fragments,我被困在尝试覆盖DialogFragment中的样式时,该片段在至少一次背景化后显示 以下是相关代码: Mystyles.xml: <style name="Theme.MyDialog.Default"> <item name="android:windowBackground">@drawable/my_background</item> </style> <style name="Theme.MyDialog.NoAnimat
styles.xml
:
<style name="Theme.MyDialog.Default">
<item name="android:windowBackground">@drawable/my_background</item>
</style>
<style name="Theme.MyDialog.NoAnimation"
parent="Theme.MyDialog.Default">
<item name="android:windowEnterAnimation">@null</item>
</style>
即使对话框片段在背景化后回到前台,样式也永远不会是R.style.Theme\u MyDialog\u NoAnimation
。调试语句显示super.setStyle(…)
确实发生了,但我猜它发生在视图创建之后。应用程序暂停后是否可以覆盖样式
更新:请参阅我的评论,其中包括下面的答案。回答我自己的问题 基于
在创建片段对话框后调用setStyle(int,int)将无效。
希望这能帮助其他人 回答我自己的问题 基于
在创建片段对话框后调用setStyle(int,int)将无效。
希望这能帮助其他人
private boolean wasPaused;
@Override
public void onStart() {
super.onStart();
if (wasPaused) {
// when this dialog re-enters foreground, do not animate it
super.setStyle(DialogFragment.STYLE_NO_FRAME, R.style.Theme_MyDialog_NoAnimation);
}
}
@Override
public void onStop() {
wasPaused = true;
super.onStop();
}