Android 自定义输入手机号自动添加分隔符
作者:世人笑我太疯癫 发布时间:2022-08-15 12:32:27
标签:android,分隔符
比较简单的一个控件,就是加些逻辑处理而已,以前貌似是直接监听的,封装起来方便点
public class AccountTxtView extends android.support.v7.widget.AppCompatEditText {
private final char CUT = '-';
public AccountTxtView(Context context) {
super(context);
}
public AccountTxtView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AccountTxtView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
if (text == null || text.length() == 0)
return;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {//添加分割符
if (i != 3 && i != 8 && text.charAt(i) == CUT) {
continue;
} else {
sb.append(text.charAt(i));
if ((sb.length() == 4 || sb.length() == 9)
&& sb.charAt(sb.length() - 1) != CUT) {
sb.insert(sb.length() - 1, CUT);
}
}
}
//防止多次设置值
if (!sb.toString().equals(text.toString())) {
int index = start + 1;
if (sb.charAt(start) == CUT) {
if (lengthBefore == 0) {
index++;
} else {
index--;
}
} else {
if (lengthBefore == 1) {
index--;
}
}
setText(sb.toString());
setSelection(index);
}else{//删除时候判断
String line = text.subSequence(text.length() - 1, text.length()).toString();
if (line.equals(String.valueOf(CUT))) {//如果删除碰到‘-'符号,则默认去除
sb.deleteCharAt(text.subSequence(0, text.length() - 1).length());
setText(sb.toString());
setSelection(sb.length());
}
}
}
public String getPhone() {
String result = null;
String val = getText().toString();
if (val == null || val.isEmpty())
return "";
result = val.replace(String.valueOf(CUT), "");
return result;
}
}
使用也简单
然后效果就出来了
输入第四个的时候自动填充‘-'分隔符,然后删除的时候自动删除‘-'分隔符
以上所述是小编给大家介绍的Android 自定义输入手机号自动添加分隔符网站的支持!
来源:http://www.cnblogs.com/LiuZhen/archive/2017/05/17/6869358.html


猜你喜欢
- using System.Drawing;using System.Drawing.Drawing2D;using System.Drawi
- 在我们编写好一款软件后,我们不想别人盗用我们的软件,这时候我们可以采用注册的方式来保护我们的作品。这时候我们可能就需要简单了解一下加密解密技
- 很多App都有这种效果,特别一些电商类的App,顶部每隔几秒钟会向右翻页显示下张图片,用来作推广或者内容展示用的。今天来简单地模仿一下,还自
- 1. c语言中的整数类型有char, short, int, long等几种, 下面是C语言对每种数据类型长度的规定: (a). short
- namespace ConsoleApplication1{ using System; &n
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下XML布局主页面main布局<com.handma
- 访问静态资源的配置及顺序今天在玩SpringBoot的demo的时候,放了张图片在resources目录下,启动区访问的时候,突然好奇是识别
- 本文实例讲述了C#中static静态变量的用法。分享给大家供大家参考。具体如下:使用 static 修饰符声明属于类型本身而不是属于特定对象
- 本文实例讲述了C#检测远程计算机端口是否打开的方法。分享给大家供大家参考。具体分析如下:这段C#代码用于检测远程计算机的3389端口是否处理
- 最近做了一个项目中,其中遇到这样的需求要求图片移动到手指触碰的地方。具体实现代码如下所示:package com.example.plane
- 在日常Android手机的使用过程中,根据电话号码获得联系人头像,是经常会碰到的问题。本文即以实例形式讲述了Android根据电话号码获得联
- 嵌入式开发中,由于产品的绑定、验证等逻辑限制比较严重,需要自己做一个上位机工具,来实现USB/BT通讯工具,实现如串口通讯、OTA升级等功能
- java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在
- 前言 短时间提升自己最快的手段就是背面试题,最近总结了Java常用的面试题,分享给大家,希望大家都能圆梦大厂,加油,我命由我不由天
- spring Boot源码编译1. git上下拉最新版的spring Boot下载:git clone git@github.com:spr
- 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而
- Java发红包案例,供大家参考,具体内容如下首先我们需要分析这个代码的架构是什么,需要什么类组成等。我们需要建立4个类,这4个类分别是用户类
- 本文实例为大家分享了Android实现京东首页效果的具体代码,供大家参考,具体内容如下1.效果图:2.布局源码链接<?xml vers
- Parallel类是对线程的一个抽象。该类位于System.Threading.Tasks名称空间中,提供了数据和任务并行性。Paralle
- 最近学习Spring,一直不太明白Srping的切面编程中的的argNames的含义,经过学习研究后,终于明白,分享一下需要监控的类:pac