Android应用程序主题覆盖视图主题

时间:2015-05-14 20:54:29

标签: android android-theme android-styles

我已经开发了一款Android应用程序已有一段时间了,而且几乎所有内容都应该如此。但是,我对某些观点的主题存在一些问题。我的应用程序使用基于AppCompat.Light的主题,如下所示:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

一切看起来都是白色和干净的,但我有一个特别的屏幕是黑暗的。所以我为一些EditText字段创建了以下主题:

<style name="InputField" parent="Theme.AppCompat"></style>

为了使输入字段具有白色。然后,我在具有不同Android版本的设备上运行该应用程序。在Android 5.0.2的智能手机上,一切看起来都像我预期的那样。然而,在安装了Android 4.4.4的智能手机上,输入很暗。我甚至试图将输入字段主题的主题更改为

<style name="InputField" parent="Theme.Holo"></style>

<style name="InputField" parent="@android:style/Widget.Holo.EditText"></style>

values-v19样式中,但它仍然看起来很暗。如果我将应用程序主题更改为

<style name="AppBaseTheme" parent="Theme.AppCompat.NoActionBar"></style>

输入字段看起来应该如此,但应用程序的其余部分都是黑暗的主题,这不是我想要的。我只能假设应用程序主题对我的视图主题有一些影响,即使我明确指定了他们应该使用的主题。在具有android 4.2.2的智能手机上也会发生同样的行为。

1 个答案:

答案 0 :(得分:0)

系统提供的样式不定义使用的颜色,它们只引用主题属性。颜色是定义主题的,因此,如果将父级设置为某种系统样式,这还不够。

启动API 21(5.0),您可以通过设置属性android:theme来覆盖特定视图(或样式)的主题。对于旧版本,您需要以您的风格定义特定颜色和绘图。