亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

這里總結了三種方法如下:

方法一:

1. 引用兩個命名空間:

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

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

定義EditText mEditText對象

2. 控制字符長度:

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

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()); //光標置后
  } 
  }
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count,
   int after) {
  }
  @Override
  public void afterTextChanged(Editable s) {
  }
 });

方法三:

int mMaxLenth = 200;//設置允許輸入的字符長度
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);
  }
  }
 });

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

第三種方法沒有問題。

希望本文所述對大家的Android程序設計有所幫助。

相關文章

  • Android實現(xiàn)手勢滑動多點觸摸縮放平移圖片效果

    Android實現(xiàn)手勢滑動多點觸摸縮放平移圖片效果

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

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

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

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

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

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

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

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

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

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

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

    android通用xml解析方法

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

    Android自定義轉盤菜單效果

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

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

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

    Android模仿用戶設置密碼實例

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

最新評論