AppCompat和EditText在不同的API上有不同的下划线

我试图使EditText下划线颜色变化(它将用于input的validation,所以它必须能够在运行时改变)。

我正在使用AppCompat库。 问题是,在API 21及以上,我看到透明的黑色线条(灰色覆盖),而不是粗体版本。

如何使其与API 16相同?

我用这个代码来改变色调:

  final Drawable originalDrawable = view.getBackground(); final Drawable wrappedDrawable = DrawableCompat.wrap(originalDrawable); DrawableCompat.setTint(wrappedDrawable, Color.RED); setBackground(view,wrappedDrawable); 

PIC

Solutions Collecting From Web of "AppCompat和EditText在不同的API上有不同的下划线"

通过添加这些行到我的主题find解决scheme:

  <item name="editTextStyle">@style/Base.V7.Widget.AppCompat.EditText</item> <item name="editTextBackground">@drawable/abc_edit_text_material</item> 

你不应该改变背景。 如果你创build一个主题,使用主题颜色(colorPrimary,colorAccent对于小部件最重要)来获得所需的效果会更好。 将主题分配给您的EditText并享受。 注意:您应该使用其中一个AppCompat主题作为基本主题。

 <style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorAccent">@color/accent</item> </style> 

并在你的colors.xml

 <color name="primary">#ff0000</color> <color name="accent">#00ff00</color>