欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android同時(shí)控制EditText輸入字符個(gè)數(shù)和禁止特殊字符輸入的方法

 更新時(shí)間:2015年04月23日 11:42:18   作者:滄海一粟……  
這篇文章主要介紹了android同時(shí)控制EditText輸入字符個(gè)數(shù)和禁止特殊字符輸入的方法,涉及Android操作EditText控制字符操作的技巧,需要的朋友可以參考下

本文實(shí)例講述了android同時(shí)控制EditText輸入字符個(gè)數(shù)和禁止特殊字符輸入的方法。分享給大家供大家參考。具體分析如下:

這里總結(jié)了三種方法如下:

方法一:

1. 引用兩個(gè)命名空間:

import android.text.TextWatcher; 
import android.text.Editable;

用于禁止特殊字符輸入控制

定義EditText mEditText對(duì)象

2. 控制字符長(zhǎng)度:

通過InputFilter過濾來實(shí)現(xiàn)字符長(zhǎng)度控制,這樣的好處是可以實(shí)現(xiàn)動(dòng)態(tài)長(zhǎng)度控制,而不是一個(gè)長(zhǎng)度定值

int mMaxLenth = 20;
InputFilter[] FilterArray = new InputFilter[1];
 FilterArray[0] = new InputFilter() {
  @Override
  public CharSequence filter (CharSequence source, int start, int end, 
   Spanned dest, int dstart, int dend){
  boolean bInvlid = false;
  int sourceLen = getCharacterNum(source.toString());
  int destLen = getCharacterNum(dest.toString());
  if (sourceLen + destLen > mMaxLenth) {
   return "";  }
  return source;
  }
 };
mEditText.setFilters(FilterArray);

3. 禁止特殊字符輸入:

 mEditText.addTextChangedListener(new TextWatcher() {
  String tmp = "";
  String digits = "/\\:*?<>|\"\n\t";
  @Override
  public void onTextChanged(CharSequence s, int start, int before,
   int count) {
  mEditText.setSelection(s.length());
  }
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count,
   int after) {
  tmp = s.toString();
  }
  @Override
  public void afterTextChanged(Editable s) {
  String str = s.toString();
  if (str.equals(tmp)) {
   return;
  }
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < str.length(); i++) {
   if (digits.indexOf(str.charAt(i)) < 0) {
   sb.append(str.charAt(i));
   }
  }
  tmp = sb.toString();
  mEditText.setText(tmp);
  }
 });

方法二:

1. 添加引用:

import java.util.regex.*;

2. 定義函數(shù):

public static String StringFilter(String str)throws PatternSyntaxException{ 
 String regEx = "[/\\:*?<>|\"\n\t]"; //要過濾掉的字符
 Pattern p = Pattern.compile(regEx); 
 Matcher m = p.matcher(str); 
 return m.replaceAll("").trim(); 
 }

3. 添加監(jiān)聽事件:

mEditText.addTextChangedListener(new TextWatcher() {
  @Override
  public void onTextChanged(CharSequence s, int start, int before,
   int count) {
  String t = mEditText.getText().toString();
  String editable = mEditText.getText().toString(); 
  String str = stringFilter(editable.toString()); 
  if(!editable.equals(str)){ 
   mEditText.setText(str); 
   mEditText.setSelection(str.length()); //光標(biāo)置后
  } 
  }
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count,
   int after) {
  }
  @Override
  public void afterTextChanged(Editable s) {
  }
 });

方法三:

int mMaxLenth = 200;//設(shè)置允許輸入的字符長(zhǎng)度
public static String stringFilter(String str)throws PatternSyntaxException{ 
 String regEx = "[/\\:*?<>|\"\n\t]";
 Pattern p = Pattern.compile(regEx);
 Matcher m = p.matcher(str);
 return m.replaceAll("");
 }
mEditText.addTextChangedListener(new TextWatcher() {
  private int cou = 0;
  int selectionEnd = 0;
  @Override
  public void onTextChanged(CharSequence s, int start, int before,
   int count) {
  cou = before + count;
  String editable = mEditText.getText().toString();
  String str = stringFilter(editable); //過濾特殊字符
  if (!editable.equals(str)) {
   mEditText.setText(str);
  }
  mEditText.setSelection(mEditText.length());
  cou = mEditText.length();
  }
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count,
   int after) {
  }
  @Override
  public void afterTextChanged(Editable s) {
  if (cou > mMaxLenth) {
   selectionEnd = mEditText.getSelectionEnd();
   s.delete(mMaxLenth, selectionEnd);
  }
  }
 });

以上代碼都經(jīng)過測(cè)試,給大家共享!對(duì)于第一,二,兩種方法在三星NOTE 2中會(huì)有個(gè)問題(其他手機(jī)沒有問題),并且輸入窗口會(huì)出現(xiàn)跳動(dòng);具體原因,感興趣的朋友可以調(diào)試一下!

第三種方法沒有問題。

希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果

    Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果

    這篇文章主要介紹了Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果,實(shí)現(xiàn)圖片支持多點(diǎn)觸控,自由的進(jìn)行縮放、平移的注意事項(xiàng),感興趣的小伙伴們可以參考一下
    2016-02-02
  • 詳解Retrofit 動(dòng)態(tài)參數(shù)(非固定參數(shù)、非必須參數(shù))(Get、Post請(qǐng)求)

    詳解Retrofit 動(dòng)態(tài)參數(shù)(非固定參數(shù)、非必須參數(shù))(Get、Post請(qǐng)求)

    這篇文章主要介紹了詳解Retrofit 動(dòng)態(tài)參數(shù)(非固定參數(shù)、非必須參數(shù))(Get、Post請(qǐng)求),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Android使用自定義ImageView實(shí)現(xiàn)圓形圖片效果

    Android使用自定義ImageView實(shí)現(xiàn)圓形圖片效果

    本篇文章主要介紹了Android使用自定義ImageView實(shí)現(xiàn)圓形圖片效果,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android 實(shí)現(xiàn)懸浮窗功能

    Android 實(shí)現(xiàn)懸浮窗功能

    這篇文章主要介紹了Android 實(shí)現(xiàn)懸浮窗功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 一文搞懂Android RecyclerView點(diǎn)擊展開、折疊效果的實(shí)現(xiàn)代碼

    一文搞懂Android RecyclerView點(diǎn)擊展開、折疊效果的實(shí)現(xiàn)代碼

    雖然在日常開發(fā)中已經(jīng)多次接觸過RecycleView,但也只是用到其最基本的功能,并沒有深入研究其他內(nèi)容。接下來將抽出時(shí)間去了解RecycleView的相關(guān)內(nèi)容,這篇文章主要是介紹Android RecyclerView點(diǎn)擊展開、折疊效果的實(shí)現(xiàn)方式,一起看看吧
    2021-06-06
  • android中Activity橫豎屏切換的那些事

    android中Activity橫豎屏切換的那些事

    本篇文章主要介紹了android中Activity橫豎屏切換的那些事,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • android通用xml解析方法

    android通用xml解析方法

    之前做的網(wǎng)絡(luò)相關(guān)的應(yīng)用,里面涉及到了xml的解析,由于急于完成任務(wù)也沒有設(shè)計(jì)就直接敲代碼。這幾天給一個(gè)朋友做項(xiàng)目的時(shí)候也涉及到了xml的解析,而且解析的內(nèi)容比較多,我查看了以前的項(xiàng)目中的相關(guān)代碼,頓時(shí)覺得很多代碼都是可以優(yōu)化的。在此寫兩個(gè)通用的xml解析方法,當(dāng)然這里所講的通用只是在一定程度上并且需要遵守一些規(guī)范。
    2013-03-03
  • Android自定義轉(zhuǎn)盤菜單效果

    Android自定義轉(zhuǎn)盤菜單效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義轉(zhuǎn)盤菜單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽器方式

    Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽器方式

    這篇文章主要介紹了Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android模仿用戶設(shè)置密碼實(shí)例

    Android模仿用戶設(shè)置密碼實(shí)例

    首先有2個(gè)對(duì)話框,沒有設(shè)置過密碼,需要設(shè)置dialog_set_password.xml,用戶設(shè)置過密碼,不需要設(shè)置,直接輸入密碼dialog_input_password.xml,具體實(shí)現(xiàn)代碼,大家參考下本文
    2017-03-03

最新評(píng)論