Android EditTextView 实现带空格分隔的输入(电话号码,银行卡)
作者:Ryhume 发布时间:2023-09-02 12:48:19
标签:android,edittextview,空格分隔
电话号码输入框需求:
三位,七位后有空格
删除倒数第四,第八位会将空格也删除
使用TextWatcher
When an object of a type is attached to an Editable, its methods will be called when the text is changed.就是说,只要是一个可编辑的文本设置了TextWatcher,当文本发生变化时,TextWatcher里的方法将会被调用.
其实不难,看了网上搜索到的例子,思路绕了点,这边做一份自己的记录
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
/**
* @desc
* @autor Xemenes
* @time 2017/5/12 10:18
*/
public class PhoneNumberTextWatcher implements TextWatcher {
EditText editText;
int lastContentLength = 0;
boolean isDelete = false;
public PhoneNumberTextWatcher(EditText editText) {
this.editText = editText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
StringBuffer sb = new StringBuffer(s);
//是否为输入状态
isDelete = s.length() > lastContentLength ? false : true;
//输入是第4,第9位,这时需要插入空格
if(!isDelete&& (s.length() == 4||s.length() == 9)){
if(s.length() == 4) {
sb.insert(3, " ");
}else {
sb.insert(8, " ");
}
setContent(sb);
}
//删除的位置到4,9时,剔除空格
if (isDelete && (s.length() == 4 || s.length() == 9)) {
sb.deleteCharAt(sb.length() - 1);
setContent(sb);
}
lastContentLength = sb.length();
}
@Override
public void afterTextChanged(Editable s) {
}
/**
* 添加或删除空格EditText的设置
*
* @param sb
*/
private void setContent(StringBuffer sb) {
editText.setText(sb.toString());
//移动光标到最后面
editText.setSelection(sb.length());
}
}
总结
以上所述是小编给大家介绍的Android EditTextView 实现带空格分隔的输入(电话号码,银行卡)网站的支持!
来源:http://blog.csdn.net/xiongge358/article/details/71750953


猜你喜欢
- 工具类之前用AsyncTask 现在改用rxJavapublic class SaveImageUtils { pu
- 这篇文章主要介绍了JAVA利用递归删除文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- Spring中BeanFactory FactoryBean和ObjectFactory的三种的区别引言关于FactoryBean 和 Be
- 以String转Date为例:定义转换器:import java.text.ParseException;import java.util.
- 实现android双击后退键退出当前APP功能实现该功能基本思路是,1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出2, 退出
- 1.Mybatis的Dao层实现1.1 传统开发方式1.1.1编写UserDao接口public interface UserDao { &
- 前几天在这里分享了手写 sql 分页查询实现分页,现在来看看使用 mybatis 分页插件 pagehepler 来实现分页使用分页插件的原
- Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅
- 下面是我的实现经历:1.首先,我是直接使用AlertDialog来实现,确定是,形状有点难看,而且获得Dialog里面的控件略显麻烦(因为我
- mybatis-plus-generator + clickhouse 自动生成代码依赖<!--> mybatis-plus &
- 调试的时候,在循环里增加条件判断,可以极大的提高效率,心情也能愉悦。以下介绍下IDEA使用条件【Condition】断点的方法1、编写一段样
- Spring介绍:spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而, Spring的用途不仅限于服务
- 前言这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分。这次主要是总结依赖注入的bean的装配方式。
- 实现多文件的上传,基于标准的http来实现。1.多文件上传MyUploader类的实现:/** * * 同步上传多个文件 * 基于标准的h
- 1. WebView 远程代码执行漏洞描述 Android API l
- 目录小写 string 与大写 String声明与初始化 stringstring 的不可变性正则 string 与原义 stringstr
- 文件上传是网站非常常用的功能,直接使用Servlet获取上传文件还得解析请求参数,比较麻烦,所以一般选择采用apache的开源工具,comm
- 这篇会深化View拖拽实例,利用Flutter Animation、插值器以及AnimatedBuilder教大家实现带动画的抽屉效果。先来
- java类的方法,我特别喜欢《java编程思想》里面的描述,这本书说java类之间的相互通信是通过消息。比如顾客类的对象调用一个eat方法,
- 一、引言在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,