Android 4.x 上的自定义警报对话框看起来很奇怪
Custom Alert Dialog looking weird on Android 4.x
我想在我的 Android 应用程序中自定义警报对话框,因此我首先更改了我的应用程序主题的 alertDialogTheme 属性,如下所示:
res/values/themes.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"/>
</resources>
只是这样做,我没想到对话框看起来与标准不同,因为新主题 AlertDialogTheme 与其 parent 完全相同。它在 Android Lollipop 上正常工作,但在 Android Kitkat 中,对话框后面出现一个白色矩形。它是这样的:
我做错了什么吗?可能用错了parent?
谢谢!
发生这种情况是因为您使用的是 AlertDialog
而不是相对较新的 AlertDialogCompat
。它在所有平台上带来了相同的 Material 设计风格对话框,强烈建议使用它。
要使用它,您必须确保在您的 Gradle 文件中,您的依赖项中包含以下行:
com.android.support:appcompat-v7:24.2.1
(这是最新版本。通过查看 SDK 管理器确保您已更新所有包)。
然后在 Activity 中要显示它的地方,您必须导入 android.support.v7.app.AlertDialog
并像以前一样使用 AlertDialog.Builder。
我使用以下代码修复了它:
<style name="CustomAppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
将 appcompat
依赖项添加到您的构建脚本:
implementation 'com.android.support:appcompat-v7:27.1.1'
将 android.app.AlertDialog
的所有用法替换为 android.support.v7.app.AlertDialog
。
对于那些使用 AndroidX 的用户,您需要使用以下导入:
import androidx.appcompat.app.AlertDialog
我想在我的 Android 应用程序中自定义警报对话框,因此我首先更改了我的应用程序主题的 alertDialogTheme 属性,如下所示:
res/values/themes.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"/>
</resources>
只是这样做,我没想到对话框看起来与标准不同,因为新主题 AlertDialogTheme 与其 parent 完全相同。它在 Android Lollipop 上正常工作,但在 Android Kitkat 中,对话框后面出现一个白色矩形。它是这样的:
我做错了什么吗?可能用错了parent?
谢谢!
发生这种情况是因为您使用的是 AlertDialog
而不是相对较新的 AlertDialogCompat
。它在所有平台上带来了相同的 Material 设计风格对话框,强烈建议使用它。
要使用它,您必须确保在您的 Gradle 文件中,您的依赖项中包含以下行:
com.android.support:appcompat-v7:24.2.1
(这是最新版本。通过查看 SDK 管理器确保您已更新所有包)。
然后在 Activity 中要显示它的地方,您必须导入 android.support.v7.app.AlertDialog
并像以前一样使用 AlertDialog.Builder。
我使用以下代码修复了它:
<style name="CustomAppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
将
appcompat
依赖项添加到您的构建脚本:implementation 'com.android.support:appcompat-v7:27.1.1'
将
android.app.AlertDialog
的所有用法替换为android.support.v7.app.AlertDialog
。
对于那些使用 AndroidX 的用户,您需要使用以下导入:
import androidx.appcompat.app.AlertDialog