更改 EditText 背景颜色并保留下划线

pau*_*dam 5 java android

文本下方的线条是设置为视图背景的可绘制线条,当editText.setBackgroundColor(color)调用时,内部会发生以下情况:

setBackground(new ColorDrawable(color));
Run Code Online (Sandbox Code Playgroud)

这将删除包含该线的可绘制对象,并将其替换为我们赋予它的颜色。

是否可以更改 EditText 的背景颜色而不使文本下方的线条消失?

在布局内设置 EditText 并更改布局的背景颜色不是一个选项。

MeL*_*ine 3

尝试让可绘制的部分像这样思考:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-2dp" android:left="-2dp" android:right="-2dp">
        <shape> 
            <solid android:color="@color/background_color"/>
            <stroke android:color="@color/underline_color" android:width="2dp"/>
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

从这样的资源中设置你的 EditText 背景:

editText.setBackgroundResource(R.drawable.name_to_xml_file);
Run Code Online (Sandbox Code Playgroud)