要想给EditText设置边框的颜色,本身的属性是没有可以设置的。只能采用两种办法:第一:设置背景图片 第二:自定义EditText.
第一种方法:首先是定义一个样式 style 例如:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="my_edittext_style" parent="@android:style/Widget.EditText">//继承的是系统给定的editText的样式
<item name="android:background">@drawable/my_edittext</item>
</style>
</resources>
紧接着要在drawable下面创建一个名为my_edittext的文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http:/ / schemas.androi d.c om/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/editbox_focus" />
<item android:drawable="@drawable/editbox_normal" />
在xml中的使用:
<EditText
style="@style/my_edittext_style"
android:id = "@+id/my_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
第二种方法:自定义控件的方法:
public class MyEditText extends EditText{
public MyEditText(Context context, AttributeSet attrs) {//两个参数的构造方法
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();//创建一个画笔
paint.setStyle(Style.STROKE);//画笔的风格
paint.setStrokeWidth(2);//线条的宽度
if(this.isFocused() == true){
paint.setColor(Color.parseColor("#122e29"));//画笔的颜色
}else{
paint.setColor(Color.rgb(0,173,173));
}
//在画布上画出一个矩形
canvas.drawRoundRect(new RectF(2+this.getScrollX(), 2+this.getScrollY(), this.getWidth()-3+this.getScrollX(), this.getHeight()+ this.getScrollY()-1), 3,3, paint);
super.onDraw(canvas);
}
}
(2)设置EditText光标的颜色 editText有一个属性:android:textCursorDrawable 这个就是来控制光标的颜色的。 如果设置为@null 意思就是光标的颜色跟文本的颜色是一样的。
(3) 给EditText加上下划线:需要自定义editText
- public class UnderLineEditText extends EditText {
- private Paint linePaint;
- private int paperColor;
- public UnderLineEditText(Context context,AttributeSet paramAttributeSet) {
- super(context,paramAttributeSet);
- // TODO Auto-generated constructor stub
- this.linePaint = new Paint();
- linePaint.setColor(Color.GRAY);//设置下划线颜色
- }
- protected void onDraw(Canvas paramCanvas) {
- paramCanvas.drawColor(this.paperColor); //设置背景色
- int i = getLineCount();
- int j = getHeight();
- int k = getLineHeight();
- int m = 1 + j / k;
- if (i < m) i = m;
- int n = getCompoundPaddingTop();
- int distance_with_btm=(int) (getLineHeight()-getTextSize())-3;
- //这个关于距离底部的变量当不使用lineSpacingMultiplier和lineSpacingExtra参数时是不起作用的
- for (int i2 = 0;; i2++) {
- if (i2 >= i) {
- super.onDraw(paramCanvas);
- paramCanvas.restore();
- return;
- }
- n += k;
- n-=distance_with_btm;//将线划在字体靠下面
- paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint);
- paramCanvas.save();
- n+=distance_with_btm;//还原n
- }
- }
- }
- 以上代码引用 http://blog.csdn.net/harvic880925/article/details/24416131