我引用了自定义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的背景颜色(以编程方式)??
答案 0 :(得分:0)
使用此代码可以帮助您,它可以帮助我
app:backgroundTint="@color/gray"
答案 1 :(得分:0)
在onDraw()方法的LinedEditText中使用此代码来更改其颜色:
canvas.drawColor(Color.BLACK);
或通过资源布局文件,您可以这样做:
app:backgroundTint="@android:color/holo_red_dark"