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 自定义输入手机号自动添加分隔符,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-10-23 00:22:06

Android 自定义输入手机号自动添加分隔符的相关文章

EditText输入手机号自动带空格

在android开发过程中,经常会要求用户输入手机号,为了便于观看,我们都会已135 xxxx xxxx这种格式展示 通过下面的方法,直接输入格式化. xml布局文件中写法如下: <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLength=&quo

Android自定义ImageView实现自动放大缩小动画

这篇讲的是如何生成一个自定义的ImageView,实现自动放大缩小动画. 为什么实现这个功能呢?因为我想在ViewPager实现图片放大缩小的动画,但是ViewPager几个页面的动画会一起动,而且放大全屏图片的话会相互覆盖,很诡异.于是上网搜demo,一无所获.迫于无奈... 废话不多说,直接贴代码. 1.配置文件直接添加 当直接在布局文件中添加图片的话,可以在自定义View代码中用getDrawable()获取图片资源,然后通过DrawBitmap绘制图片.通过不断绘制图片的位置,达到放大缩

如何在Eclipse中自动添加注释和自定义注释风格

在无论什么项目中,注释都是不可缺少的,注释的种类和风格非常之多,每个公司有每个公司自己的一套标准,中大型项目一般写注释是为了自动生成文档便于维护,比如Java自带的Javadoc.功能更强大使用更广泛的Doxygen(Doxygen自动文档生成工具在Eclipse中的集成及使用举例)等.注释的任务其实挺繁重的,总以为自己在做着无意义的事,每次重复的写着统一的注释风格更是费时费力.Eclipse用的很熟的都知道Eclipse里自带了某些注释风格,但并不一定适用于你的标准,因此如何自定义注释风格然后

android 运营商-android 输入手机号获取运营商信息

问题描述 android 输入手机号获取运营商信息 android 输入手机号获取运营商信息,跪求各位大神给一个能运行的demo

Android自定义视图三:给自定义视图添加“流畅”的动画

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 在第二部分我们实现了一个简单的折线图.这里假设你已经读了前篇.下面我们将继续为这个折线图添砖加瓦. 我在想给这个图的上方添加三个按钮,这样用户可以点选不同的按钮来查看不同类别的数据.比如,用户

旋转 文字添加-android 自定义edittext 拖动缩放旋转

问题描述 android 自定义edittext 拖动缩放旋转 最近在做一个拼图的项目,要求在一张背景图上添加文字,文字可编辑如修改颜色.样式.字体等,也可对文字的位置进行修改,实现拖动.旋转.缩放等功能,类似于美图秀秀中文字的添加,最后可将背景图和文字联合生成一张图片,保存到相册中,本人是菜鸟,求高手指教,如果有简单的demo的话,那就不胜感激. 解决方案 你好 请问解决了没有 请赐教

Android自定义视图一:扩展现有的视图,添加新的XML属性

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承实现view group以及如何给其子视图添加动画.第一篇

Android 自定义dialog添加文字超链接,点击报错无法实现跳转

问题描述 Android 自定义dialog添加文字超链接,点击报错无法实现跳转 自定义dialog,添加文字超链接,点击超链接报错,同样方法,在activity中就能实现,什么原因?? 解决方案 Intent中加入这个试试: intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 解决方案二: 报错是报的什么错,, 解决方案三: 抓取log如下 01-01 02:49:07.928: E/InputEventReceiver(3774): Excepti

Android自定义View仿支付宝输入六位密码功能_Android

跟选择银行卡界面类似,也是用一个PopupWindow,不过输入密码界面是一个自定义view,当输入六位密码完成后用回调在Activity中获取到输入的密码并以Toast显示密码.效果图如下: 自定义view布局效果图及代码如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/