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

时间:2015-06-29 14:27:20

标签: android android-edittext android-appcompat

我试图为EditText进行下划线颜色更改(它将用于输入验证,因此它必须能够在运行时更改)。

我正在使用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

2 个答案:

答案 0 :(得分:6)

通过将这些行添加到我的主题中找到解决方案:

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

答案 1 :(得分:2)

您不应该更改背景。如果你创建一个主题,并使用主题颜色(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>