AlertDialog 的轻主题?

Posted

技术标签:

【中文标题】AlertDialog 的轻主题?【英文标题】:Light theme for AlertDialog? 【发布时间】:2010-08-17 21:16:14 【问题描述】:

我正在创建一个 AlertDialog。我正在使用 setView() 设置自定义视图。这会在对话框中启用“深色”主题(灰色背景,需要白色文本)。

有没有办法将对话框设置为使用“轻”主题?它看起来更好(白色背景,深色文本)。

谢谢

【问题讨论】:

看到这个答案:***.com/questions/2422562/… 【参考方案1】:

我采取的步骤:

创建一个扩展 Dialog 的类。 在 onCreate 中,调用 setContentView(x, y) 其中 x 为 你的 R.layout 和 y 是 R.style.popupStyle(见下文)。 在您的 res/values/style.xml 中,您 需要覆盖默认值 对话框窗口样式。我试过了 制作一种具有这种风格的风格 它的父母,但这仍然没有 清除所有默认值。所以我检查了 android git tree 并获得了默认值 样式,然后复制粘贴。这 是一个

<style name="Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item>
    <item name="android:windowBackground">@android:drawable/panel_background</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>

您会遇到一些错误,只需从官方 Android 的 styles.xml 和 Themes.xml 文件中复制更多内容即可解决。

供参考:styles.xml 和 themes.xml。

【讨论】:

DialogWindowTitle 不公开,应该使用:?android:attr/windowTitleStyle 这会在实际对话框周围留下一个白色边框,到目前为止,我发现没有办法将边框移除为透明,因此对话框阴影实际上被渲染到真实背景而不是白色边框上跨度>

以上是关于AlertDialog 的轻主题?的主要内容,如果未能解决你的问题,请参考以下文章

Android Dialog 普通对话框 单选对话框 多选对话框

自定义活动主题,默认对话框主题

蜂窝中的蓝色和白色 AlertDialog

如何在 Android 应用程序中使用供应商主题

AlertDialog 样式 - 如何更改标题、消息等的样式(颜色)

Android:AlertDialog Button 不接受样式