Android笔记之自定义Editext

1、重写EdiText类,下面是一个逐条显示下划线的Editext

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.EditText;
public class MyEditText extends EditText{
    public MyEditText(Context context, AttributeSet attrs) {
         super(context, attrs);  
    }  
  
    @Override  
    protected void onDraw(Canvas canvas) {  
   
         float lineHeight =  this.getLineHeight();   
         Paint mPaint = getPaint();  
         mPaint.setColor(Color.GRAY);  
         float topPadding =this.getPaddingTop();  
         float leftPadding = this.getPaddingLeft();  
         float textSize = getTextSize();  
         setGravity(Gravity.LEFT|Gravity.TOP);  
         float y= (float) (topPadding + textSize);  
         for(int i=0; i<getLineCount(); i++) {  
             canvas.drawLine(leftPadding, y+10, getRight()-leftPadding, y+10, mPaint);  
             //前四个参数的类型均为float,最后一个参数类型为Paint。
             //表示用画笔paint从点(startX,startY)到点(stopX,stopY)画一条直线; 
             y+=lineHeight;  
        }  
       canvas.translate(0, 0);  
       super.onDraw(canvas);  
   }  
  /** 
   * 设置记事本的编辑框背景线条颜色 
   * @param color int type【代表颜色的整数】 
   */  
   public void setBGColor(int color) {  
       invalidate();  
   }  
   /** 
    * 设置记事本的编辑框背景线条颜色 
    * @param colorId int type【代表颜色的资源id】 
    */  
   public void setBGColorId(int colorId) {  
       getResources().getColor(colorId);  
       invalidate();  
   }  
 
}  

2、在layout文件添加自定义的EditText控件:

<com.example.edit.MyEditText
        android:id="@+id/tv_state"
        android:layout_width="match_parent"
        android:layout_height="278dp"
        android:background="#00000000"
        android:focusable="true"
        android:gravity="top"
        android:hint="@string/note"
        android:textSize="25dp" />

 

3、(1)设置光标的位置android:gravity="top"  ,默认在中间那行

(2)Edittext设置圆角边框:新建shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00ff00ff"/>
    <corners android:radius="8px"/>
    <stroke android:color="#32CD32"
        android:width="2px"
        />
</shape>

为Editext设置背景:

        android:padding="10dip"   //不然光标会和边框挤在一起
        android:background="@drawable/shape"

 

posted @ 2013-08-23 18:07  行云有影  阅读(602)  评论(0编辑  收藏  举报