EditText的相关知识

       要想给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

     

  1. public class UnderLineEditText extends EditText {  
  2.       
  3.     private Paint linePaint;  
  4.     private int paperColor;  
  5.   
  6.     public UnderLineEditText(Context context,AttributeSet paramAttributeSet) {  
  7.         super(context,paramAttributeSet);  
  8.         // TODO Auto-generated constructor stub  
  9.         this.linePaint = new Paint();  
  10.         linePaint.setColor(Color.GRAY);//设置下划线颜色  
  11.     }  
  12.       
  13.     protected void onDraw(Canvas paramCanvas) {  
  14.         paramCanvas.drawColor(this.paperColor); //设置背景色  
  15.         int i = getLineCount();  
  16.         int j = getHeight();  
  17.         int k = getLineHeight();  
  18.         int m = 1 + j / k;  
  19.         if (i < m) i = m;  
  20.         int n = getCompoundPaddingTop();  
  21.           
  22.         int distance_with_btm=(int) (getLineHeight()-getTextSize())-3;  
  23.         //这个关于距离底部的变量当不使用lineSpacingMultiplier和lineSpacingExtra参数时是不起作用的  
  24.   
  25.         for (int i2 = 0;; i2++) {  
  26.             if (i2 >= i) {  
  27.                 super.onDraw(paramCanvas);  
  28.                 paramCanvas.restore();  
  29.                 return;  
  30.             }  
  31.               
  32.             n += k;  
  33.             n-=distance_with_btm;//将线划在字体靠下面  
  34.             paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint);  
  35.             paramCanvas.save();  
  36.             n+=distance_with_btm;//还原n  
  37.         }  
  38.     }  
  39.   
  40. }  
  41. 以上代码引用   http://blog.csdn.net/harvic880925/article/details/24416131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值