自定义手机号码分割样式"188 8888 8888"的EditText
2017-03-02 15:05
866 查看
如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/13/4dbe6d65176f7461def538bcfff433f7)
现在来自定义一个手机号"188 8888 8888"的输入框,贴下代码:
然后xml中使用
现在就可以使用了,要获取号码直接用PhoneEditText的对象.getPhoneText()就可以了,现在又可以愉快的玩耍了
现在来自定义一个手机号"188 8888 8888"的输入框,贴下代码:
import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.widget.EditText; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 用于手机号格式“188 8888 8888” * Created by Alex on 2017/2/28. */ public class PhoneEditText extends EditText implements TextWatcher { public PhoneEditText(Context context) { super(context); } public PhoneEditText(Context context, AttributeSet attrs) { super(context, attrs); } public PhoneEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { super.onTextChanged(s, start, before, count); if (s == null || s.length() == 0) return; StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i++) { if (i != 3 && i != 8 && s.charAt(i) == ' ') { continue; } else { sb.append(s.charAt(i)); if ((sb.length() == 4 || sb.length() == 9) && sb.charAt(sb.length() - 1) != ' ') { sb.insert(sb.length() - 1, ' '); } } } if (!TextUtils.isEmpty(sb.toString().trim()) && !sb.toString().equals(s.toString())) { setText(sb.toString()); setSelection(sb.length()); } } @Override public void afterTextChanged(Editable s) { } /** * 获取电话号码 * @return */ public String getPhoneText() { String str = getText().toString(); return replaceBlank(str); } /** * 去除字符串中的空格、回车、换行符、制表符 * * @param str * * @return */ private String replaceBlank(String str) { String dest = ""; if (str != null) { Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(str); dest = m.replaceAll(""); } return dest; } }
然后xml中使用
<com.alex.demo.PhoneEditText android:id="@id/id_edit_view_a" style="@style/StandardEditText" android:hint="请输入手机号" android:inputType="phone" android:maxLength="13" />
现在就可以使用了,要获取号码直接用PhoneEditText的对象.getPhoneText()就可以了,现在又可以愉快的玩耍了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/899229cfab2c02d614490485cabb781b.gif)
相关文章推荐
- 【转载】[jquery.validate]自定义方法实现"手机号码或者固定电话"的逻辑验证
- [jquery.validate]自定义方法实现"手机号码或者固定电话"的逻辑验证
- Android EditText简单自定义边框样式
- easyUI 验证控件应用、自定义、扩展验证 手机号码或电话话码格式
- 拍照保存(调用手机),对话框的自定义样式
- 自定义input[type="checkbox"]的样式
- 自定义绘制android EditText的背景,定义EditText文字的显示样式
- easyUI 验证控件应用、自定义、扩展验证 手机号码或电话话码格式
- 自定义input[type="radio"]的样式
- PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
- 工行又爆漏洞?可以通过"在线缴费"系统,根据手机号码查机主姓名,座机机主...
- 邮箱和手机号码正则表达式验证(手机号码支持188)-HTML-XHTML-CSS
- 自定义(滑动条)input[type="range"]样式
- 自定义信笺纸样式的EditText
- Android-->自定义模版EditText(多用于手机号码,银行卡号等输入)
- 自定义input[type="file"]的样式
- 做单数字每格的自定义手机号码输入框
- 自定义input[type="radio"]的样式
- PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享