无法在android中更改自定义editText的背景颜色

时间:2017-11-30 09:31:59

标签: android

我引用了自定义editText,因为我想在edittext中绘制线条 所以我有这个课程

public class LinedEditText extends android.support.v7.widget.AppCompatEditText {
private Rect mRect;
private Paint mPaint;
private int COLOR;

public LinedEditText(Context context, AttributeSet attrs) {
    super(context, attrs);

    mRect = new Rect();
    mPaint = new Paint();        
    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
    SharedPreferences sh= PreferenceManager.getDefaultSharedPreferences(context);
    String co=sh.getString("line_color", String.valueOf(R.color.blue_line));
    mPaint.setColor(getResources().getColor(Integer.parseInt(co))); //SET YOUR OWN COLOR HERE
}

@Override
protected void onDraw(Canvas canvas) {
    //int count = getLineCount();

    int height = getHeight();
    int line_height = getLineHeight();
    int count = height / line_height;
    if (getLineCount() > count)
        count = getLineCount();//for long text with scrolling

    Rect r = mRect;
    Paint paint = mPaint;
    int baseline = getLineBounds(0, r);//first line

    for (int i = 0; i < count; i++) {

        canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
        baseline += getLineHeight();//next line
    }
    super.onDraw(canvas);
}

}

我在xml和另一个类(MainActivity)中使用了这个类而没有任何问题 但是当我尝试改变颜色时,即使我在xml中改变了,也不会改变

xml:

 <my.app.haythamayyash.note.LinedEditText
        android:layout_width="match_parent"
        android:inputType="textMultiLine"
        android:scrollbars="vertical"
        android:gravity="top|start"
        android:ems="10"
        android:id="@+id/detail2"
        android:layout_height="463dp"
        android:backgroundTint="@android:color/transparent"
        android:textColor="@android:color/black"
        android:minHeight="510dp"/>

我尝试通过添加android:background =&#34; @ color / grey&#34;但没有改变 ,我试图通过

来改变它
ed.setBackgroundColor(Color.parseColor("#ffffff"));

ed.setBackgroundResource(R.color.gray); 但没有变化 我猜LinedEditText类中的问题,因为我更改了其他editText(不是LinedEditText)及其工作.. 如何更改此editText的背景颜色(以编程方式)??

2 个答案:

答案 0 :(得分:0)

使用此代码可以帮助您,它可以帮助我

        app:backgroundTint="@color/gray"

答案 1 :(得分:0)

在onDraw()方法的LinedEditText中使用此代码来更改其颜色:

 canvas.drawColor(Color.BLACK);

或通过资源布局文件,您可以这样做:

app:backgroundTint="@android:color/holo_red_dark"