【发布时间】:2013-08-12 00:35:30
【问题描述】:
我在 Android 中遇到了一个关于警报对话框的严重问题。我已经扩展了 DialogFragment,我希望对话框是全屏的。经过多次失败的尝试后,我发现我可以通过设置对话框主题来获得全屏对话框。我是这样做的
ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_NoActionBar_Fullscreen);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
自从我读到它与旧 API 兼容。但遗憾的是,它只适用于某些主题,它从不适用于全息主题。例如。如果我使用 Theme_Black_NoActionBar_Fullscreen 它将是全屏的,但如果我使用 Theme_Holo_NoActionBar_Fullscreen 甚至 Theme_DeviceDefault_NoActionBar_Fullscreen 它不会是全屏的。每当涉及 Holo 时,对话框都不会填满屏幕。
我什至尝试定义自己的风格,使用以下设置扩展 Theme.Holo:
<item name="android:windowIsFloating">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowIsTranslucent">true</item>
但即使明确设置全屏和空框架和背景等也无济于事,对话框仍然拒绝填充屏幕的宽度(我正在手机上以横向模式测试它)。
我很想得到一些帮助,我整天都在努力让它工作。首先,我尝试使用 LayoutParams 设置窗口属性,但这似乎不适用于 DialogFragment。谢谢。
【问题讨论】:
-
全屏对话框被称为活动 :) 你为什么不这样呢?
-
好的,不是完全全屏,我仍然想要对话窗口周围的边距。这就是您使用 Theme_Black_NoActionBar_Fullscreen 所获得的。您会得到一个使用屏幕大部分宽度的窗口,并带有边距。但是对于 Holo 主题,我只得到一个屏幕宽度一半的窗口。该对话框包含文本,因此如果它使用更多宽度会更好。无论如何,我尝试过的任何方法都不能让我以任何方式改变对话框的宽度。当然我应该能够以某种方式影响宽度,而不是必须为我选择宽度?