一尘不染

Java使用appcompat v7更改EditText底线颜色

java

我正在使用appcompat v7在Android 5及更低版本上获得一致的外观。效果不错。但是我不知道如何更改EditTexts的底线颜色和强调颜色。可能吗?

我试图定义一个自定义项android:editTextStyle(请参见下文),但是我仅成功更改了完整的背景色或文本色,但没有更改底线或强调色。是否有要使用的特定属性值?我必须通过android:background属性使用自定义可绘制图像吗?不能指定六种颜色吗?

 <style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
     <item name="android:editTextStyle">@style/Widget.App.EditText</item>
 </style>

 <style name="Widget.App.EditText" parent="Widget.AppCompat.EditText">
     ???
 </style>

根据android API 21的来源,具有材料设计的EditTexts似乎使用colorControlActivatedcolorControlNormal。因此,我试图在以前的样式定义中覆盖这些属性,但是没有效果。appcompat可能不使用它。不幸的是,我找不到与材料设计有关的最新版本的appcompat的资源。


阅读 574

收藏
2020-03-08

共1个答案

一尘不染

最后,我找到了解决方案。它只是由覆盖的价值colorControlActivated,colorControlHighlight并colorControlNormal在你的应用程序主题定义,而不是你的EditText风格。然后,考虑将这个主题用于你想要进行的任何活动。下面是一个示例:

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">@color/accent</item>
    <item name="colorControlHighlight">@color/accent</item>
</style>
2020-03-08