Android实现仿支付宝的密码均分输入框

  

<强> Android仿支付宝的密码均分输入框

  

此为安卓项目,通过重绘edittext进行文字的均分排布。

  

直接贴上代码:

        包com.xxx.xxx;      进口android.content.Context;   进口android.graphics.Canvas;   进口android.graphics.Color;   进口android.graphics.Paint;   进口android.graphics.Rect;   进口android.text.Editable;   进口android.text.Selection;   进口android.text.TextWatcher;   进口android.util.AttributeSet;   进口android.view.ViewGroup;   进口android.widget.EditText;/* *   *此控件为均分输入框控件   *使用说明:XML文件中设置好文字大小,设置好宽度。高度使用wrap_content更佳,亦可设置固定高度   *(随着输入的行数变化会导致高度成倍增加)   *允许设置每行显示的文字个数   *允许设置最多显示多少行   *允许设置密码符显示   *允许设置多行输入   *   *由2015/10/22曰。   */公开课ExcelEditView EditText{延伸      私人int mMaxLength=6;//一行显示的最大字符数   私人int mColorId=Color.BLACK;//字体颜色   私人布尔isPassword=false;//是否需要显示密码符   私人浮动mHeight f=0.0;//默认情况的高度   私人int mMaxLine=0;//最大的行数:如果为0,- - -表示支持多行输入不为0,则为该行      公共ExcelEditView(上下文语境){   超级(上下文);   init ();   }      公共ExcelEditView(上下文语境,AttributeSet集){   超级(上下文,设置);   init ();   }      私人空间init () {   这一点。addTextChangedListener(新TextWatcher () {   @Override   公共空间beforeTextChanged (CharSequence进行年代,int, int数,int后){      }      @Override   公共空间onTextChanged (CharSequence进行年代,int, int, int数){//TODO自动生成方法存根   可编辑的编辑=ExcelEditView.this.getText ();   int len=editable.length ();      如果(mMaxLine比;0,,len祝辞mMaxLength * mMaxLine)   {   int selEndIndex=Selection.getSelectionEnd(可编辑);   字符串str=editable.toString ();   字符串newStr=str.substring (0, mMaxLength * mMaxLine);   ExcelEditView.this.setText (newStr);   可编辑=ExcelEditView.this.getText ();//新字符串的长度   int newLen=editable.length ();//旧光标位置超过字符串长度   如果(selEndIndex比;newLen)   {   selEndIndex=editable.length ();   }//设置新光标所在的位置   选择。setSelection(可编辑,selEndIndex);      }   }      @Override   公共空间afterTextChanged(可编辑){      }   });   }      公共空间setIsPassword(布尔isPassword) {   这一点。isPassword=isPassword;   }      公共空间setmMaxLine (int) {   这一点。mMaxLine=线;   }      公共空间setmMaxLength (int愣){   这一点。mMaxLength=愣;   }      @Override   公共空间setTextColor (int颜色){   super.setTextColor(颜色);   mColorId=颜色;   }      @Override   保护无效onDraw(帆布画布){   .toString char [] txt=this.getText () () .toCharArray ();//取出字符数组   int txtLine=getLineFromCharArray (txt);//计算有多少行   如果(mMaxLine比;0,,txtLine祝辞mMaxLine){//进行行数的上限处理   txtLine=mMaxLine;   }   如果(this.isPassword){//密码符的转义   for (int i=0;iAndroid实现仿支付宝的密码均分输入框