java - 使用 appcompat v7 更改 EditText 底线颜色

我正在使用 appcompat v7 以在 Android 5 及更低版本上获得一致的外观。它工作得很好。但是我无法弄清楚如何更改 EditTexts 的底线颜色和强调颜色。可能吗?

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

 <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 来源,带有 Material 设计的 EditTexts 似乎使用 colorControlActivatedcolorControlNormal。因此,我尝试在之前的样式定义中覆盖这些属性,但没有效果。可能 appcompat 不使用它。不幸的是,我找不到最新版本的带有 Material 设计的 appcompat 的来源。

最佳答案

最后,我找到了解决方案。它只是在你的应用主题定义中覆盖 colorControlActivatedcolorControlHighlightcolorControlNormal 的值,而不是你的 edittext 样式。然后,考虑将此主题用于您想要的任何 Activity 。下面是一个例子:

<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>

https://stackoverflow.com/questions/26574328/

相关文章:

java - 在Android应用程序中存储用户设置的最合适方法是什么

java - Java的隐藏特性

java - 在 Java 中检查字符串是否为空或 null

java - Mockito:试图监视方法正在调用原始方法

java - 如何使用 LocalDateTime 解析/格式化日期? (Java 8)

java - 使用 Mockito 模拟静态方法

java - 如果可以使用 synchronized(this),为什么还要使用 Reentrant

java - 如何在 Java 项目中查找未使用/死代码

java - 如何在 Java 中进行 URL 解码?

java - Java 中如何使用匿名内部类?