Android:如何将dialogFragment设置为全屏
你好我已经尝试覆盖全屏的dialogFragment的主题,但我想要的全屏幕是在上一个活动的顶部覆盖,所以当dialogFragment打开时,我们仍然可以看到从屏幕和dialogFragment之间的填充返回活动。Android:如何将dialogFragment设置为全屏
这是我用来全屏样式
<style name="fullscreen_dialog" parent="android:Theme" >
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">false</item>
</style>
你可以只手动设置布局PARAMS在代码中像这样。希望能帮助到你 ! :)。还要检查它这个SO Adjusting size of custom dialog box in android
Window window = myDialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
这是我想通了处理您的问题的解决方案:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Override
public void onStart() {
super.onStart();
Dialog dialog = getDialog();
if (dialog != null) {
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
}
在onStart()中添加逻辑确实有效。谢谢! –
谢谢,它的作品! – Herman
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
有改变的风格和主题的方法。
/* theme is optional, I am using leanback... */
setStyle(STYLE_NORMAL, R.style.AppTheme_Leanback);
我测试它得到全屏,它的工作很好,简单的布局。
你也可以做一些喜欢 -
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setStyle(STYLE_NO_TITLE, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen);
} else {
setStyle(STYLE_NO_TITLE, android.R.style.Theme_DeviceDefault_Light_NoActionBar);
}
super.onCreate(savedInstanceState);
}
谢谢,这似乎是唯一适合我的工作,与其他人提到的onStart中的MATCH_PARENT一起使用。 – Aranda
FWIW,我不得不设置一个子类关闭@风格/ Base.Theme.AppCompat.Light一个特殊的风格。否则,没有任何支持库字段看起来是正确的。如果您使用@ style/Base.Theme.AppCompat.Light.Dialog,它会创建我不想要的浮动外观。
下面的解决方案对我来说非常合适。
的片段对话框如下图所示创建样式:
<style name="dialog_theme" parent="android:Theme" >
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
</style>
创建您的Java类,如下:
public class FiltersDialogFragment extends android.support.v4.app.DialogFragment {
static FiltersDialogFragment newInstance() {
FiltersDialogFragment fragment = new FiltersDialogFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.dialog_theme);
}
@Override
public void onStart() {
super.onStart();
Dialog d = getDialog();
if (d!=null){
int width = ViewGroup.LayoutParams.MATCH_PARENT;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
d.getWindow().setLayout(width, height);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_filters, container, false);
return view;
}
}
编码愉快!
工作完美。不错的工作 – KingWu
[在Android的全屏DialogFragment](可能的重复http://*.com/questions/7189948/full-screen-dialogfragment-in-android) – Distwo