Android实现 EditText输入手机号空格功能

Android EditText输入手机号空格

  • 开发需求是在登录页面的手机EditText中间插入空格,让用户看起来方便点, 130 1234 4567,中间第4个数字和第5个数字空格前面加空格。
  • 要求还有一点,就是除了输入要加入空格,从其他地方复制过来的电话号码,没有空格的,也要在粘贴后,自动补全空格。
  • 思路:重写TextWatcher,每次EditText内容变化,都判断内容是否符合要求。
@Override
public void afterTextChanged(Editable s)
{
 //需求是130 1234 4567,中间第4个数字和第5个数字空格前面加空格
 StringBuffer sb = new StringBuffer(s);
 //StringBuffer.length()是长度,所以下标从1开始
 //字符数组第4位如果不是空格字符,就在他前面插一个空格字符
 if (s.length() >= 4)
 {
  char[] chars = s.toString().toCharArray();
  //数字下标是从0开始
  if (chars[3] != ' ')
  {
   sb.insert(3,' ');
   setContent(sb);
  }
 }
 if (s.length() >= 9)
 {
  char[] chars = s.toString().toCharArray();
  //因为第4位加了一个空格,所以第8位数字,就是字符数组的第9位,下标是8。
  if (chars[8] != ' ')
  {
   sb.insert(8,' ');
   setContent(sb);
  }
 }
}

使用,就是把EditText内容监听换成自己写的。

etPhone.addTextChangedListener(new PhoneTextWatcher(etPhone)
{
 @Override
 public void afterTextChanged(Editable s)
 {
  //如果还要做的监听事情,可以继续写
  super.afterTextChanged(s);
 }
});

完整代码,里面有一个别人的方法,就这方法是粘贴时,空格不自动补全:

//www.jb51.net/article/134183.htm

/**
 * Created by solexit04 on 2017/9/4.
 * 手机号中间插入空格
 */
public class PhoneTextWatcher implements TextWatcher
{
 private EditText editText;
 private boolean isDelete;
 private int lastContentLength;
 public PhoneTextWatcher(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)
 {
  //需求是130 1234 4567,中间第4个数字和第5个数字空格前面加空格
  StringBuffer sb = new StringBuffer(s);
  //StringBuffer.length()是长度,所以下标从1开始
  //字符数组第4位如果不是空格字符,就在他前面插一个空格字符
  if (s.length() >= 4)
  {
   char[] chars = s.toString().toCharArray();
   //数字下标是从0开始
   if (chars[3] != ' ')
   {
    sb.insert(3,' ');
    setContent(sb);
   }
  }
  if (s.length() >= 9)
  {
   char[] chars = s.toString().toCharArray();
   //因为第4位加了一个空格,所以第8位数字,就是字符数组的第9位,下标是8。
   if (chars[8] != ' ')
   {
    sb.insert(8,' ');
    setContent(sb);
   }
  }
 }
 /**
  * 添加或删除空格EditText的设置
  */
 private void setContent(StringBuffer sb)
 {
  editText.setText(sb.toString());
  //移动光标到最后面
  editText.setSelection(sb.length());
 }
}

总结

以上所述是小编给大家介绍的Android实现 EditText输入手机号空格功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 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里的方法将会被调用. 其实不难,看了网上搜索到的例子,思路绕了点,这边做一份自己的记

  • Android之EditText控制禁止输入空格和回车

    1.EdiTtext输入框控制不能输入空格,给EditText添加一个addTextChangedListener监听,如果有空格split截取截取再for循环将截取后不包含空格的字符串数组重新排列这样这个字符串就不包含空格了,最后将这个字符串重新写入EditText,这时会出现一个问题就是光标会自动跳转到第一个位置,在onTextChanged中会有一个叫做start的变量他会传入在这个空格输入之前的光标位置,EditText.setSelection(int)来改变光标的位置具体位置. 具体

  • Android EditText每4位自动添加空格效果

    基本功能 刚拿到需求,很简单的一个功能,二话不说,很快就出来了: 完美!顺利上线! 没过几天领导拿着手机过来说:"这一堆数字在一起看着很费劲,像其他App一样,加个空格吧!" 于是就有了这个demo. 拓展功能 下面就来在基本功能上做拓展:每4位,自动添加空格. 看似很小的功能,在开发的过程中,遇到了非常多的问题与难点: EditText输入框监听死循环 输入框中的空格无法删除(删除又添加) 从中间删除一个数字产生的一系列问题 输入框光标位置的控制问题 之前踩坑的过程就不再赘述了,太心

  • Android EditText追加空格、限制字符等方法示例

    前言 使用输入框时产品常常会有一些需求,比如123456789变成123-456-789或者限制一些字符的输入等等.很多时候都是网上搜索就完事了,但是每次都去搜索有点浪费时间,而且有些也不符合需求.所以自己写一篇,以后就可以吃老本了.

  • Android EditText禁止输入空格和特殊字符

    有时候我们需要限制EditText输入的字符类型,如空格,特殊字符等,这时候我们可以使用系统提供的输入过滤器--InputFilter.具体实现如下: /** * 禁止EditText输入空格 * @param editText */ public static void setEditTextInhibitInputSpace(EditText editText){ InputFilter filter=new InputFilter() { @Override public CharSequ

  • Android实现 EditText输入手机号空格功能

    Android EditText输入手机号空格 开发需求是在登录页面的手机EditText中间插入空格,让用户看起来方便点, 130 1234 4567,中间第4个数字和第5个数字空格前面加空格. 要求还有一点,就是除了输入要加入空格,从其他地方复制过来的电话号码,没有空格的,也要在粘贴后,自动补全空格. 思路:重写TextWatcher,每次EditText内容变化,都判断内容是否符合要求. @Override public void afterTextChanged(Editable s)

  • Android实现EditText输入金额

    EditText是Android中一个非常实用的控件,有很多InputType,可以来达到不同的输入效果,如下图: 比如,密码输入,数字输入等等.但是最近在项目中要实现EditText输入金额,金额的限制因素很多,比如,只能输入数字和小数点,首位不能输入0和小数点,小数点后面只能保留两位等等,这些仅仅用InputType是无法实现的,今天用InputFilter来实现. 1. 首先需要将EditText的InputType设置成如下格式,保证用户只能输入小数点和数字 android:inputT

  • 全面解析Android中对EditText输入实现监听的方法

    在 Android design support 包中提供了一种在输入不合适字符时一直显示的提示方式来显示,现在已经开始在更多的应用上被使用了:这些 Android app 在显示他们的错误提示时采用的不同的方式常常让人感觉非常的不和谐. 即这个一直显示的错误消息是在 TextInputLayout 中的 EditText 周围的.这也是,作为一个奖励,提供了材料设计风格中,活泼的浮动标签在一个 APP 的用户体验中常常是最无聊的部分. 这里来讨论如何在你的输入表单上去创建一个通用的.可重用的组

  • Android实现页面短信验证功能

    本文实例为大家分享了Android实现页面短信验证功能的具体代码,供大家参考,具体内容如下 目标效果: 上一篇博文介绍的是使用SDK中自带的验证页面,需要进行多次跳转,并且项目需要添加两个框架,多有不便,这个例子简化了短信验证的代码,但是不足的是功能不如原本那个完善. 1.新建项目,找到上一次下载的SDK文件中包含的SMSSDK项目,复制lib目录下的三个jar包,res目录下的raw文件夹和values目录下的两个xml文件到本项目. 2.activity_main.xml页面设置布局. ac

  • jQuery实现手机号正则验证输入及自动填充空格功能

    本文实例讲述了jQuery实现手机号正则验证输入及自动填充空格功能.分享给大家供大家参考,具体如下: 先来看看运行效果(在删除时连删即可): 具体代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <inpu

  • Android中Edittext设置输入条件

    一.应用场景 之前做商城应用时,会有对用户资料的设置情况进行限制,如下: (1)用户邮箱,应当只允许输入英文字母,数字和@.两个符号, (2)用户手机,应当只能输入数字,禁止输入其他字符. (3)用户密码,应当不能输入空格以及中文字符等. 二.解决方案 针对用户邮箱以及用户手机,有以下两种解决方案: (1)EditText中的android:digits属性: 它表示EditText能够接受的字符集合.通过配置此属性,就可以实现只允许输入指定的字符.这里列举上述三种场景下的android:dig

  • EditText实现输入限制和校验功能实例代码

    一.方法 1)输入限制 1.通过android:digits限制只能输入小写abc android:digits="abc" 2.通过android:inputType限制只能输入数字 android:inputType="number" 在android:inputType中可以设置各种限制,比如邮箱地址等等 2)校验 直接通过代码实现 String s=et_verify_empty.getText().toString(); if(s==null||s.len

  • Android UI设计系列之自定义EditText实现带清除功能的输入框(3)

    最近公司的产品在陆续做升级,上级领导给的任务是优化代码结构以及项目架构,力争把项目写的精巧简练,于是我们满工程找冗余... 我们都知道每一个项目基本上都是有登陆页的,在登陆页中肯定是少不了输入框了,当我们在输入框中输入数据后如果输入的内容不正确或者是错误的或者是想重新输入,如果嗯键盘上的删除键就得一个一个的去删除,这时候我们或许就想要是能有一个标记当点击了这个标记能把我们刚刚输入的内容清空就好了.这样可以极大的提升用户体验,就拿QQ的登陆来说吧,效果如下: 当点击密码框右侧的小×图标时输入的内容

  • Android实现iPhone晃动撤销输入功能 Android仿微信摇一摇功能

    很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内容,很多手机需要一直按住退格键逐字逐句的删除,稍稍麻烦,不过在iPhone上,有个人性化的功能,当我们想要去撤销刚刚输入的所有内容的时候,可以轻轻晃动手机,会弹出提示框,点击确定就可以清空内容,如下图: 在android中,一般手机貌似没有定制这个功能,不过我们可以自己去实现这样的功能,放置在我们的项目程序中,体现更人性化的设计,思路很简单,主要是利用手机内置的加速度传感器装置,其实大家一定会想到微信的"摇一摇&

随机推荐