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 实现带空格分隔的输入(电话号码,银行卡),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

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

  • C++中带空格字符串的输入问题解决

    前言 字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结. C++用cin输入的时候会忽略空格以后的字符,比如 char a[100]; cin>>a; C++用cin输入的时候会忽略空格以后的字符,输入"hello world"输出的是"hello": 如果用循环输入 for(int i=0;i<100;i++) { cin>>a[i]; } 这样输入100个数吗?或者定义

  • C/C++中带空格字符串的输入讲解

    目录 C语言 C++ string类型 总结 C语言 #include <iostream> using namespace std; int main() { char str[100]; gets(str); printf("%s\n",str); return 0; } C++ string类型 #include <iostream> #include <string> using namespace std; int main() { str

  • Android实现银行卡、手机号带空格格式

    本文实例为大家分享了Android实现银行卡.手机号带空格格式的具体代码,供大家参考,具体内容如下 工具类: package com.gongzhibao.gzb.widget; import android.content.Context; import android.content.res.TypedArray; import android.support.v7.widget.AppCompatEditText; import android.text.Editable; import

  • Android编程开发之EditText中不输入特定字符会显示相关提示信息的方法

    本文实例讲述了Android编程开发之EditText中不输入特定字符会显示相关提示信息的方法.分享给大家供大家参考,具体如下: 先看效果图: 源码如下: 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="

  • Android系统自带的VPN服务框架实例详解

    Android系统自带的VPN服务框架 Android从4.0开始(API LEVEL 15),自己带了一个帮助在设备上建立VPN连接的解决方案,且不需要root权限,本文将对其做一个简单的介绍. 一.基本原理 在介绍如何使用这些新增的API之前,先来说说其基本的原理. android设备上,如果已经使用了VpnService框架,建立起了一条从设备到远端的VPN链接,那么数据包在设备上大致经历了如下四个过程的转换: 1)应用程序使用socket,将相应的数据包发送到真实的网络设备上.一般移动设

  • C++读取带空格字符串的方法

    关于在C++中字符串的输入整理笔记 1. cin cin是C++中最常用的输入语句,当遇到空格或者回车键即停止 如: #include <iostream> #include <string> using namespace std; int main() { chara[50]; cin>>a; cout<<a<<endl; return0; } 输入:abcd遇回车输出abcd 缺点:只能输入没有空格的字符串,当输入中含有空格,则只能输出空格

  • js正则表达式实现数字每隔四位用空格分隔代码

    数字每隔四位用空格分隔代码实例: 分享一段代码实例,它实现了数字每隔四位就用空格分隔. 这样的效果在填写银行卡的时候十分常见,这也是非常人性化的举措. 代码实例如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>我们</title> <script src="http://libs.baidu.com/jquery/1.9.

  • json数据处理技巧(字段带空格、增加字段、排序等等)

    1.json数据的正常取值:json[i].fieldName 2.json数据的字段带空格:eval('json[' + i + ']["' + field + '"]') 3.json数据的赋值:eval('json[' + i + ']["' + field + '"]=' + jsonFilter.length); 4.json数据增加字段:循环所有数据,直接json[i].newField=defaultValue就可以了 5.json数据的排序:相当于数

  • Android中实现在矩形框中输入文字显示剩余字数的功能

    虽然这两个功能都比较简单,但是在实际app开发中真的很常见,特别是显示字数或剩余字数这个功能 如下图: 要实现上面的功能,需要做到三点: 1.实现矩形框布局 思路就是矩形框作为整个布局的一个background,在drawable中创建一个shap.xml样式文件 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/

随机推荐