(Material) EditText下划线颜色

7 浏览
0 Comments

(Material) EditText下划线颜色

我遇到的问题是我不知道如何更改EditText的下划线颜色 - 我使用的是LG Nexus 5(Android 6)。我想将普通的下划线颜色更改为白色。我尝试了所有的参数(样式):

- colorControlNormal

- colorControlActivated

- colorControlHighlight

- textColorSecondary

- colorPrimary

- colorPrimaryDark

例如:


但是似乎没有任何效果(只有在EditText被聚焦时才会改变颜色,如上图所示)。

0
0 Comments

在这段代码中,<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">定义了一个主题,其中包含了三个item,分别是colorControlNormal、colorControlActivated和colorControlHighlight。这些item分别设置了不同的颜色值。

问题出现的原因是,虽然在主题中设置了这些颜色值,但是当在不同的样式中设置时,不起作用。这就导致了如果不想在应用的每个EditText中使用相同的颜色,就无法实现。

解决方法是,可以为EditText创建一个单独的样式,并将其父级设置为Theme.App.Base。然后,可以通过在XML布局中使用android:theme="/Theme.App.YourEditTextTheme"来将该样式应用到所选择的EditText中。

另外,也可以通过创建一个NinePatch Image来自定义EditText的背景,并将其构建为新的StateListDrawable。这个方法可能需要使用到Roman Nurik的NinePatch Image生成工具

总结起来,要解决((Material) EditText underline color)问题,可以通过创建单独的样式并设置父级主题,或者通过自定义背景来实现。

0
0 Comments

在API 21及更高版本中,可以尝试使用android:backgroundTint="#yourUnderlineColor"来设置EditText的下划线颜色。

0
0 Comments

问题原因:colorAccent属性会对整个应用程序中的小部件进行着色,因此使用colorAccent属性会对整体一致性产生影响,而不仅仅是对特定的EditText进行更改。

解决方法:可以使用下面的代码来解决该问题:

首先,在AppTheme样式中添加colorAccent属性:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">         
<item name="colorAccent">/colorAccent</item>    
<item name="android:editTextStyle">/EditTextStyle</item>
</style>

然后,创建一个EditTextStyle样式并将其作为colorAccent所在的AppTheme样式的子样式:

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

通过以上操作,可以使只有这些EditText发生改变,而colorAccent属性对整个应用程序的影响得到限制。

0