1

我在 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_NoA​​ctionBar_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。谢谢。

4

1 回答 1

2

AlertDialogs并不意味着全屏。为了实现这一点,您应该只Dialog使用DialogFragment. 您需要添加自己的布局才能添加按钮来模拟AlertDialog. 更多的工作......是的,但是所有那些 android.R.style.Theme_DeviceDefault_Dialog_* 主题都将正常工作。

于 2013-08-11T16:35:30.417 回答