gpt4 book ai didi

Android:DialogPreference 颜色/样式?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:57 25 4
gpt4 key购买 nike

我的主要偏好设置为 "@android:style/Theme.Light"。我的偏好之一是 DialogPreference,它的 Dialog 包含一个 ListView。 ListView 的对话框是深灰色的(因为 DialogPreference 使用创建深灰色对话框的 AlertBuilder)并且列表中的文本是黑色的(因为 Theme.Light 导致 listViews 有黑色文本)。有没有一种简单的方法可以让 ListView 以与深色对话框相同的样式运行?或者让深色对话框的行为与浅色 Activity 的风格相同?

编辑:

根据 Merlin 的评论,看来我应该尝试做的是创建一个 LightDialog 主题。为了做到这一点,我尝试了: 1. 扩展 android 的 Theme.Light 并从 Theme.Dialog 添加对话框属性

<style name="Theme.LightDialog" parent="@android:style/Theme.Light">
<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>
</style>

... 和 2. 扩展 android 的 Theme.Dialog 并添加 Theme.Light 的 lighty 属性。

   <style name="Theme.LightDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@drawable/screen_background_light</item>
<item name="android:colorBackground">@android:color/background_light</item>
<item name="android:colorForeground">@androidcolor/bright_foreground_light</item>
<item name="android:colorForegroundInverse">@android:color/bright_foreground_light_inverse</item>
<item name="android:textColorPrimary">@android:color/primary_text_light</item>
<item name="android:textColorSecondary">@android:color/secondary_text_light</item>
<item name="android:textColorTertiary">@android:color/tertiary_text_light</item>
<item name="android:textColorPrimaryInverse">@android:color/primary_text_dark</item>
<item name="android:textColorSecondaryInverse">@android:color/secondary_text_dark</item>
<item name="android:textColorTertiaryInverse">@android:color/tertiary_text_dark</item>
<item name="android:textColorPrimaryDisableOnly">@android:color/primary_text_light_disable_only</item>
<item name="android:textColorPrimaryInverseDisableOnly">@android:color/primary_text_dark_disable_only</item>
<item name="android:textColorPrimaryNoDisable">@android:color/primary_text_light_nodisable</item>
<item name="android:textColorSecondaryNoDisable">@android:color/secondary_text_light_nodisable</item>
<item name="android:textColorPrimaryInverseNoDisable">@android:color/primary_text_dark_nodisable</item>
<item name="android:textColorSecondaryInverseNoDisable">@android:color/secondary_text_dark_nodisable</item>
<item name="android:textColorHint">@android:color/hint_foreground_light</item>
<item name="android:textColorHintInverse">@android:color/hint_foreground_dark</item>
</style>

这两次尝试都失败了,因为它们使用了非公共(public)属性。关于如何创建 LightDialog 主题有什么建议吗?

最佳答案

您可以在 Android 中创建样式时继承默认主题。

请阅读 Applying Styles and Themes 上的文档特别是关于继承的部分

您应该能够使用 Theme.light 并更正您遇到的任何问题。

您可能会发现不同的供应商会更改其设备上的主题,因此如果您的目标是广泛的硬件,那么您最好创建一个完整的主题以确保您的应用在所有平台上保持一致。

更新

如本回答中所述 Consistent UI color in all Android devices有公共(public)和非公共(public)属性。答案提供了指向公共(public)属性列表的链接,但是 kernel.org 仍处于关闭状态,因此您需要挖掘 core/res/res/values/public.xml 的源代码。

关于Android:DialogPreference 颜色/样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com