Android 带有额外背景的警报对话框
Android Alert Dialog with extra background
我最近将我的应用程序迁移到 Material 设计,我偶然发现了我的警报对话框的这个问题:
我正在应用这样的对话框样式:
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>
和Theme.AlertDialog看起来像这样:
<style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent_dark</item>
</style>
这发生在我的 Kitkat 设备上,并且在 Lollipop 上运行良好。你能帮我摆脱那个外在背景吗?
使用父主题
AlertDialog.THEME_DEVICE_DEFAULT_LIGHT
添加以下样式。您还必须自定义背景。
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:background">@android:color/transparent</item>
使用下面的方法也有效
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:background">@android:color/transparent</item>
您也可以在代码中使用
进行设置
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
这应该在 setContentView
之前
dialog.setContentView(R.layout.dialog);
重点在这里:
<style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog">
...
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent_dark</item>
...
<item name="android:windowBackground">@android:color/transparent</item>
...
</style>
我有完全相同的症状,但对我来说实际上是我使用了标准框架 AlertDialog(及其生成器)而不是 android.support.v7.app.AlertDialog,切换到使用来自支持库为我解决了这个问题。
作为ironman told me here,请务必导入正确的class。
右:import android.support.v7.app.AlertDialog;
错误:import android.app.AlertDialog;
我最近将我的应用程序迁移到 Material 设计,我偶然发现了我的警报对话框的这个问题:
我正在应用这样的对话框样式:
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>
和Theme.AlertDialog看起来像这样:
<style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent_dark</item>
</style>
这发生在我的 Kitkat 设备上,并且在 Lollipop 上运行良好。你能帮我摆脱那个外在背景吗?
使用父主题
AlertDialog.THEME_DEVICE_DEFAULT_LIGHT
添加以下样式。您还必须自定义背景。
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:background">@android:color/transparent</item>
使用下面的方法也有效
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:background">@android:color/transparent</item>
您也可以在代码中使用
进行设置dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
这应该在 setContentView
之前dialog.setContentView(R.layout.dialog);
重点在这里:
<style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog">
...
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent_dark</item>
...
<item name="android:windowBackground">@android:color/transparent</item>
...
</style>
我有完全相同的症状,但对我来说实际上是我使用了标准框架 AlertDialog(及其生成器)而不是 android.support.v7.app.AlertDialog,切换到使用来自支持库为我解决了这个问题。
作为ironman told me here,请务必导入正确的class。
右:import android.support.v7.app.AlertDialog;
错误:import android.app.AlertDialog;