EditText中加入下划線


      在我們實際開發中,經常會用到把EditText去掉背景的輸入框,然后加入下划線,就像寫信的信紙一樣,。我們首先會想到設置控件的屬性,但是發現EditText根本就沒有加入下划線這個設置,所以我們得來修改一下EditText,來完成我們的需求。

     我們既然要改寫EditText,首先繼承EditText,代碼如下:

 1 public class LineEditText extends EditText {
 2     // 畫筆 用來畫下划線
 3     private Paint paint;
 4 
 5     public LineEditText(Context context, AttributeSet attrs) {
 6         super(context, attrs);
 7         paint = new Paint();
 8         paint.setStyle(Paint.Style.STROKE);
 9         paint.setColor(Color.RED);
10         // 開啟抗鋸齒 較耗內存
11         paint.setAntiAlias(true);
12     }
13 
14     @Override
15     protected void onDraw(Canvas canvas) {
16         super.onDraw(canvas);
17         // 得到總行數
18         int lineCount = getLineCount();
19         // 得到每行的高度
20         int lineHeight = getLineHeight();
21         // 根據行數循環畫線
22         for (int i = 0; i < lineCount; i++) {
23             int lineY = (i + 1) * lineHeight;
24             canvas.drawLine(0, lineY, this.getWidth(), lineY, paint);
25         }
26 
27     }
28 
29 }

   其中紅色為核心代碼,getLineHeight()方法得到的行高度與我們設置的字體大小有關系,其中canvas.drawLine是畫直線的代碼,參數分別為:開始x坐標,開始y坐標,結束x坐標,結束y坐標,Paint類的對象。 this.getWidth()是父類View的方法獲得控件的寬度。

          我們現在准備好自定義的EditText,就開始使用,把自定義控件注冊到main.xml中去,如下所示:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:background="@android:color/white"
 6     android:orientation="vertical" >
 7 
 8     <com.view.demo.view.LineEditText
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"
11         android:background="@null"
12         android:textColor="@android:color/black"
13         android:textSize="10pt" >
14     </com.view.demo.view.LineEditText>
15 
16 </LinearLayout>

  其中<com.view.demo.view.LineEditText/> 標簽的名稱就是這個自定義類的包名+類名 ,android:background="@null"的作用就是去掉EditText的輸入框,好的完成以上步驟,我們就可以在Activity中使用這個自定義控件了,在Activity中引入這個main.xml。運行效果如下:

                                                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM