Android的colorControlNormal XML属性在Lollipop之前的版本中无法起作用。
Android的colorControlNormal XML属性在Lollipop之前的版本中无法起作用。
我一直在尝试更改底部EditText
线的颜色,但是我的EditText
仍然不想改变颜色,尽管它使用了Material
的样式。
我尝试按照这个回答更改颜色:链接
所以我有一个EditText
使用Material
的样式,但颜色没有按照我设置的来。
我在Gradle
配置文件中加入了appcompat-v7
,并且颜色主题已经可以工作了。
问题出现的原因是在Android中,如果想要设置EditText的colorControlNormal, colorControlActivated和colorControlHighlight属性,需要在app主题(或活动主题)中设置,而不是在EditText的样式中设置。如果在EditText的样式中设置这些属性,将不会产生任何变化。
解决方法是,在app主题(或活动主题)中设置colorControlNormal, colorControlActivated和colorControlHighlight属性,例如:
需要确保活动正在使用这个主题。
因此,如果想要设置EditText的textColor属性,需要在EditText的样式中重写该属性,而在app主题中设置colorControlNormal属性。这样会导致与同一控件相关的样式分布在两个不同的地方。是否有更好的方法呢?
在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的颜色。