我的主要偏好活动设置为"@android:style/Theme.Light"
.我的一个偏好是DialogPreference,其Dialog包含ListView.ListView的对话框为深灰色(因为DialogPreference使用AlertBuilder创建深灰色对话框),列表中的文本为黑色(因为Theme.Light导致listViews有黑色文本).是否有一种简单的方法可以使ListView的行为与黑暗对话框相同?或者让黑暗的对话框表现出与灯光活动相同的风格?
编辑:
根据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>
Run Code Online (Sandbox Code Playgroud)
...和2.扩展android的Theme.Dialog并添加Theme.Light的轻微属性.
<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>
Run Code Online (Sandbox Code Playgroud)
这两种尝试均失败,因为它们使用非公共属性.有关如何创建LightDialog主题的任何建议?
在 Android 中创建样式时可以继承默认主题。
请阅读有关应用样式和主题的文档,特别是有关继承的部分
您应该能够使用 Theme.light 并纠正您遇到的任何问题。
您可能会发现不同的供应商会更改其设备上的主题,因此如果您的目标是广泛的硬件,那么您最好创建一个完整的主题,以确保您的应用程序在所有平台上保持一致。
更新
正如这个答案Confluence UI color in all Android devices 中所述,有公共和非公共属性。答案提供了公共属性列表的链接,但是 kernel.org 仍然关闭,因此您需要深入挖掘core/res/res/values/public.xml的源代码
归档时间: |
|
查看次数: |
4767 次 |
最近记录: |