将 Theme.Dialog 更改为 Android 中的 Theme.Light.Dialog

Posted

技术标签:

【中文标题】将 Theme.Dialog 更改为 Android 中的 Theme.Light.Dialog【英文标题】:Change Theme.Dialog to look like Theme.Light.Dialog in Android 【发布时间】:2012-06-10 13:03:37 【问题描述】:

没有Theme.Light.Dialog 可用于我正在使用Theme.Light 的项目的其余部分。

如何将Theme.Dialog 更改为Theme.Light 版本的Dialog

我知道我必须覆盖styles.xml 中Theme.Dialog 的部分,如下所示。我应该用哪些值覆盖哪些项目?

<style name="dialog_light" parent="@android:style/Theme.Dialog">
    <item name="android:???????"></item>
    <item name="android:???????"></item>
</style>

我可以将背景设为浅白灰色,但按钮、微调器等在浅色主题上也有所不同,以便在浅色背景上看起来更好。

编辑

看起来我已经成功了。

<color name="black">#FF000000</color>
<color name="whitegrey">#FFF2F2F2</color>

<style name="dialog_light" parent="@android:style/Theme.Dialog">
    <item name="@android:windowBackground">@color/whitegrey</item>
    <item name="@android:textColor">@color/black</item>        
</style>

【问题讨论】:

试试this 一个。 【参考方案1】:

除此之外,为了避免补色,我这样做了:

<!-- Makes a "light" equivalent of Theme.Dialog -->
<style name="dialog_light" parent="@android:style/Theme.Dialog">
    <item name="@android:background">@android:color/background_light</item>
    <item name="@android:textColor">@android:color/primary_text_light</item>    
</style>

【讨论】:

【参考方案2】:

这很好,谢谢! 我只是稍微更改了一下:当我运行您建议的内容时,整个屏幕都涂有背景颜色,并且对话框看起来不像应有的那样(先前的活动变暗)。

所以不要使用

@android:windowBackground

随便用

@android:background

【讨论】:

【参考方案3】:

看起来我已经成功了。

<color name="black">#FF000000</color>
<color name="whitegrey">#FFF2F2F2</color>

<style name="dialog_light" parent="@android:style/Theme.Dialog">
    <item name="@android:windowBackground">@color/whitegrey</item>
    <item name="@android:textColor">@color/black</item>        
</style>

【讨论】:

您可以将其分配给清单中的活动,使其看起来像对话。 ( android:theme="@style/dialog_light" ) 您也可以在创建 Dialog 实例时传递 , R.style.yourstyle 作为第二个参数

以上是关于将 Theme.Dialog 更改为 Android 中的 Theme.Light.Dialog的主要内容,如果未能解决你的问题,请参考以下文章

Android常用对话框大全自定义Dialog的三种方式(Theme,PopupWindow,Dialog)

Android常用对话框大全自定义Dialog的三种方式(Theme,PopupWindow,Dialog)

Android studio使用android:style/Theme.Dialog报错:You need to use a Theme.AppCompat theme (or descendant)

自定义的Theme.Dialog如何设定界面大小

AlertDialog.java

打开具有对话框的活动时应用程序关闭在背景中(样式Theme.Dialog)