android - 为什么我的 DialogFragment 在 Android 11 中没有全屏显示?
问题描述
这让我发疯,所以希望有人能提供帮助。
我有一个对话框片段,用于从列表中进行选择。我有这个全屏,它在 11/API 30 之前一直有效。但是,现在在 11 中,它开始以经典的“非全屏”外观出现,您可以在其中看到所有四个侧面的布局。
我通过覆盖 onCreateDialog 方法让它再次工作,见下文。在那种方法中,我基本上复制了我已经在 onStart() 中进行的调用,如下所示......
我的问题是为什么我必须这样做?它在 11/30 版之前运行良好,我还没有找到任何文档提到在 11 中与此相关的任何更改。
如果比我知识渊博的人能帮助我理解,那就太好了。
我必须添加的新方法:
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
final Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
return dialog;
}
我的 onStart 使窗口在 11 之前看起来正常:
public void onStart() {
super.onStart();
Window window = getDialog() != null ? getDialog().getWindow() : null;
if (window != null) {
if (windowAnimStyle > 0) {
window.getAttributes().windowAnimations = windowAnimStyle;
}
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
}
解决方案
这在 sdk 30 上对我有用
<style name="FullScreenDialogStyle">
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">false</item>
</style>
在 DialogFragment 子类中覆盖 onCreate
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.FullScreenDialogStyle)
}
推荐阅读
- framebuffer - 如何保持粒子之间的协调以及哪个纹理像素包含每个人的信息?
- excel - Excel功能区在打开时未切换到选项卡
- jquery - 根据选择选项隐藏 div
- r - 如何修复 R 中的“`.l` 的元素 2 的长度必须为 1 或 13,而不是 8”错误?
- angular - 来自后端的自定义表单验证
- android - SupportSqliteQueryBuilder 给出错误的查询结果
- php - 仅在 root 上的网站加载时间(5.22 秒)
- java - 将一个包导入另一个包定义
- python - PIL 打开 JPEG 缺少 Photoshop
- pandas - 在熊猫数据框中重塑并生成新的日期数据