java - 如何在 Android 中定义 EditText 的不同颜色和宽度

标签 java android android-edittext border android-view

这就是我向 EditText 添加边框的方法。如何仅在 EditText 的 3 边添加边框,并为每个边框定义不同的颜色和宽度?

EditText editText = new EditText(this);
editText.setText("Find");
editText.setWidth(555);

GradientDrawable border = new GradientDrawable();
border.setColor(0xFFFFFFFF);  // white background
border.setStroke(1, 0xFF000000);  // black border with full
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
    editText.setBackgroundDrawable(border);
} else {
    editText.setBackground(border);
}

我的以下尝试不起作用:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#FF0000" />
        </shape>
    </item>
    <item android:right="5dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFF" />
        </shape>
    </item>
    <item android:left="22dp">
        <shape android:shape="rectangle">
            <solid android:color="#746565" />
        </shape>
    </item>
</layer-list>

Vielen dank im voraus。

最佳答案

创建一个图层列表可绘制对象并定义 3 个具有自定义宽度和颜色的不同矩形形状,并隐藏每个形状的 3 条边以仅显示一侧。像这样:

my_edittext_border.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list android:paddingLeft="30dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="-1dp"
        android:left="-1dp"
        android:right="-1dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="1dp"
                android:color="#ff0000" />
        </shape>
    </item>

    <item
        android:bottom="-3dp"
        android:right="-3dp"
        android:top="-3dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="3dp"
                android:color="#11ee66" />
        </shape>
    </item>

    <item
        android:bottom="-5dp"
        android:left="-5dp"
        android:top="-5dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="5dp"
                android:color="#0000ff" />
        </shape>
    </item>
</layer-list>

现在将此可绘制对象设置为您的 EditText 背景:

android:background="@drawable/my_edittext_border"

关于java - 如何在 Android 中定义 EditText 的不同颜色和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056239/

相关文章:

android - 从当前光标位置的 EditText 中获取单词

java - 使 SimpleDateFormat 线程安全

java - 解析 JSON 对象时出现 NoClassDefFoundError JsonAutoDetect

android - 将菜单添加到 child 偏好屏幕

java - 在自定义 ListView 中调用 getView() 方法

java - 从 Web 服务编辑 Android 中的文本字段验证

android - 如何向 Edittext 或 Searchview 添加弯曲的下划线?

java - 尝试填充新数组后,二元运算符 '+' 的操作数类型错误

java - displaytag 外部分页/排序并获取真实行号

Android应用程序发布问题