Android开发---手机号码输入框(满11位自动跳到下个输入框)
来源:互联网 发布:windows找不到某个exe 编辑:程序博客网 时间:2024/05/23 12:33
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 start, 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 start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s != null && s.length() == 13) { if (etUserNums.isFocused()) { etUserNums.clearFocus(); etUserPwd.requestFocus(); } } }});
阅读全文
0 0
- Android开发---手机号码输入框(满11位自动跳到下个输入框)
- Android 自动弹出输入框
- android自动提示输入框
- input输入并自动跳到下个输入框
- Android-->输入框自动提示文本, 失去焦点自动输入
- Android开发如何验证输入的手机号码是否合格
- android 输入框输入时自动跳到数字键盘
- 限制输入框只能输入11位数字
- 输入框限制输入两位小数
- ios 输入框输入6位数字
- 【Android】EditText输入框自动提示
- android 输入框自动匹配-AutoCompleteTextView
- 【Android】EditText输入框自动提示
- android输入框自动顶上去问题解决。
- Android 登录输入框自动上移
- Android-AutoCompleteTextView,自动补全输入框
- Android 跳转界面 自动弹出输入框
- Android防止输入框自动弹出
- Java后端程序员1年工作经验总结
- windows7环境下Eclipse集成Python开发环境+安装TensorFlow
- dexcachelist导致anr
- 八皇后
- 排序算法之快速排序
- Android开发---手机号码输入框(满11位自动跳到下个输入框)
- 深度【文本分类】【关系抽取】模型中,如何读取并处理输出的训练文件(TXT格式)
- Boost算法库——C++11算法(one_of)
- 牛客网答题运行时间改善
- Android出现:Your project path contains non-ASCII characters.
- c语言位运算符与逻辑运算符的区别
- css通用技巧
- 一位资深程序员大牛给予Java初学者的学习路线建议
- vue框架介绍及语法