废话不多说了,直接给大家贴代码了,具体代码如下所示:
package com.jixiong.teen.vIEw;import androID.content.Context;import androID.text.Editable;import androID.text.Selection;import androID.text.TextWatcher;import androID.util.AttributeSet;import androID.Widget.EditText;/** * Created by christy on 16/12/22. */public class MoblIEEditText extends EditText { public MoblIEEditText(Context context) { super(context); this.addTextChangedListener(new MoblIEWatcher()); } public MoblIEEditText(Context context,AttributeSet attrs) { super(context,attrs); this.addTextChangedListener(new MoblIEWatcher()); } public MoblIEEditText(Context context,AttributeSet attrs,int defStyleAttr) { super(context,attrs,defStyleAttr); this.addTextChangedListener(new MoblIEWatcher()); } class MoblIEWatcher implements TextWatcher { int beforeTextLength = 0; int onTextLength = 0; boolean isChanged = false; int location = 0;// 记录光标的位置 private char[] tempChar; private final StringBuffer buffer = new StringBuffer(); int konggeNumberB = 0; @OverrIDe public voID beforeTextChanged(CharSequence s,int start,int count,int after) { beforeTextLength = s.length(); if (buffer.length() > 0) { buffer.delete(0,buffer.length()); } konggeNumberB = 0; for (int i = 0; i < s.length(); i++) { if (s.charat(i) == ' ') { konggeNumberB++; } } } @OverrIDe public voID onTextChanged(CharSequence s,int before,int count) { onTextLength = s.length(); buffer.append(s.toString()); if (onTextLength == beforeTextLength || onTextLength <= 3 || isChanged) { isChanged = false; return; } isChanged = true; } @OverrIDe public voID afterTextChanged(Editable s) { if (isChanged) { location = getSelectionEnd(); int index = 0; while (index < buffer.length()) { if (buffer.charat(index) == ' ') { buffer.deleteCharat(index); } else { index++; } } index = 0; int konggeNumberC = 0; while (index < buffer.length()) { if ((index == 3 || index == 8)) { buffer.insert(index,' '); konggeNumberC++; } index++; } if (konggeNumberC > konggeNumberB) { location += (konggeNumberC - konggeNumberB); } tempChar = new char[buffer.length()]; buffer.getChars(0,buffer.length(),tempChar,0); String str = buffer.toString(); if (location > str.length()) { location = str.length(); } else if (location < 0) { location = 0; } setText(str); Editable etable = getText(); Selection.setSelection(etable,location); isChanged = false; } } }}
使用;;
直接在布局中引用
<com.jixiong.teen.vIEw.MoblIEEditText androID:ID="@+ID/etUserNums" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:background="@null" androID:hint="@string/user_name" androID:inputType="number" androID:maxlines="1" androID:paddingleft="@dimen/margin_twenty" androID:singleline="true" androID:textcolorHint="@color/hint_color" androID:textSize="@dimen/sp_14" />
然后再activity中初始化
etUserNums.addTextChangedListener(new TeenEmptyWatcher() { @OverrIDe public voID onTextChanged(CharSequence s,int count) { } @OverrIDe public voID afterTextChanged(Editable s) { if (s != null && s.length() == 13) { if (etUserNums.isFocused()) { etUserNums.clearFocus(); etUserPwd.requestFocus(); } } }});
总结
以上所述是小编给大家介绍的AndroID手机号码输入框(满11位自动跳到下个输入框)实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android手机号码输入框(满11位自动跳到下个输入框)实例代码全部内容,希望文章能够帮你解决Android手机号码输入框(满11位自动跳到下个输入框)实例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)