zoukankan      html  css  js  c++  java
  • 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"
  • 相关阅读:
    领域驱动设计(DDD)实现之路
    《实现领域驱动设计》译者序
    一次领域驱动设计(DDD)的实际应用
    Gradle学习系列之十——自定义Plugin(本系列完)
    Gradle学习系列之九——自定义Task类型
    Gradle学习系列之八——构建多个Project
    Gradle学习系列之七——依赖管理
    Gradle学习系列之六——使用Java Plugin
    Gradle学习系列之五——自定义Property
    Gradle学习系列之四——增量式构建
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3278035.html
Copyright © 2011-2022 走看看