Android,动态地从EditText更改下划线颜色

R.Z*_*R.Z 7 android colors android-edittext

是否可以动态地从EditText更改下划线的颜色?就像效果一样,当我专注它时,它会变成蓝色.

希望你明白我想做什么.

小智 4

创建您自己的自定义控件EditText

这是我专门为您制作的一个示例:

选择后,您只需更改mPaint.setColor(Color.GREEN);为另一种颜色即可

public class CustomEditText extends EditText {
    private Rect mRect;
    private Paint mPaint;
    int widthMsSize;
    int heightMsSize;
    // we need this constructor for LayoutInflater
    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(5);
        mPaint.setColor(Color.GREEN);
        System.out.println("constructor");
    }
    protected void onMeasure(final int widthMeasureSpec,
        final int heightMeasureSpec) {
        // Extract the Ms (MesaureSpec) parameters
        widthMsSize = MeasureSpec.getSize(widthMeasureSpec);
        heightMsSize = MeasureSpec.getSize(heightMeasureSpec);
        System.out.println("on measure");
        // Satisfy contract by calling setMeasuredDimension
        setMeasuredDimension(widthMsSize,
            heightMsSize);
    }
    protected void onDraw(Canvas canvas) {
        canvas.drawLine(5, heightMsSize - 10, widthMsSize - 5, heightMsSize - 10, mPaint); //draw underline
        canvas.drawLine(8, heightMsSize - 10, 8, heightMsSize - 20, mPaint); //draw left corner
        canvas.drawLine(widthMsSize - 8, heightMsSize - 10, widthMsSize - 8, heightMsSize - 20, mPaint); //draw right corner
        super.onDraw(canvas);
    }
}
Run Code Online (Sandbox Code Playgroud)

主文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.example.testanimationfadeinfadeout.CustomEditText
        android:id="@+id/textedit"
        android:layout_width="228dp"
        android:layout_height="41dp"
        android:ems="10"
        android:hint="color is changed" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)