Android的colorControlNormal XML属性在Lollipop之前的版本中无法起作用。

9 浏览
0 Comments

Android的colorControlNormal XML属性在Lollipop之前的版本中无法起作用。

我一直在尝试更改底部EditText线的颜色,但是我的EditText仍然不想改变颜色,尽管它使用了Material的样式。

我尝试按照这个回答更改颜色:链接

所以我有一个EditText使用Material的样式,但颜色没有按照我设置的来。

我在Gradle配置文件中加入了appcompat-v7,并且颜色主题已经可以工作了。


0
0 Comments

在使用Support Library v25.0.0时,我遇到了类似的问题。我想要改变菜单项的高亮颜色,但是下面的这些属性都不起作用:

<item name="colorControlNormal">/YOUR_COLOR</item>
/YOUR_COLOR
/YOUR_COLOR

唯一一种允许我在Pre-L设备上改变颜色的属性是:

<item name="actionBarItemBackground">/YOUR_DRAWABLE</item>

我停止继续寻找解决方法,因为很明显Support Library并不适用于生产代码。

0
0 Comments

问题出现的原因是在Android中,如果想要设置EditText的colorControlNormal, colorControlActivated和colorControlHighlight属性,需要在app主题(或活动主题)中设置,而不是在EditText的样式中设置。如果在EditText的样式中设置这些属性,将不会产生任何变化。

解决方法是,在app主题(或活动主题)中设置colorControlNormal, colorControlActivated和colorControlHighlight属性,例如:


需要确保活动正在使用这个主题。

因此,如果想要设置EditText的textColor属性,需要在EditText的样式中重写该属性,而在app主题中设置colorControlNormal属性。这样会导致与同一控件相关的样式分布在两个不同的地方。是否有更好的方法呢?

0
0 Comments

在Android中,有一个问题是在低于Android 5.0(Lollipop)版本的设备上,colorControlNormal属性在XML中不起作用。这导致在这些设备上无法正确设置EditText的颜色。

这个问题的出现原因可能是因为在定义主题时,错误地编辑了位于values-v21文件夹中的主题文件,而不是位于values文件夹中的主题文件。应该确保在values文件夹中编辑主题文件。

为了解决这个问题,可以尝试使用android.support.v7.widget.AppCompatEditText代替EditText。在通过编程方式创建视图时,应始终使用这个类。

通过使用AppCompatEditText,可以解决在低于Android 5.0版本的设备上colorControlNormal属性无效的问题。这样就可以正确设置EditText的颜色。

通过以上的解决方法,可以解决Android中colorControlNormal属性在低版本设备上无效的问题。这将确保在所有设备上都能正确设置EditText的颜色。

0