(Material) EditText下划线颜色
在这段代码中,<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)问题,可以通过创建单独的样式并设置父级主题,或者通过自定义背景来实现。
问题原因: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属性对整个应用程序的影响得到限制。