最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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對象

2. 控制字符長度:

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

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è)置允許輸入的字符長度
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)過測試,給大家共享!對于第一,二,兩種方法在三星NOTE 2中會(huì)有個(gè)問題(其他手機(jī)沒有問題),并且輸入窗口會(huì)出現(xiàn)跳動(dòng);具體原因,感興趣的朋友可以調(diào)試一下!

第三種方法沒有問題。

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

相關(guān)文章

  • 深入理解與運(yùn)行Android Jetpack組件之ViewModel

    深入理解與運(yùn)行Android Jetpack組件之ViewModel

    ViewModel是Android Jetpack組件之一,是一種用于管理UI相關(guān)數(shù)據(jù)的架構(gòu)組件,它能夠幫助開發(fā)者實(shí)現(xiàn)優(yōu)雅的數(shù)據(jù)驅(qū)動(dòng)和生命周期管理,本文將深入淺出地介紹ViewModel的使用和原理,帶你一步步掌握這個(gè)強(qiáng)大的組件
    2023-08-08
  • Android從圖片獲取二維碼的方法

    Android從圖片獲取二維碼的方法

    這篇文章主要為大家詳細(xì)介紹了Android從圖片獲取二維碼的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Flutter實(shí)現(xiàn)切換應(yīng)用時(shí)隱藏應(yīng)用預(yù)覽

    Flutter實(shí)現(xiàn)切換應(yīng)用時(shí)隱藏應(yīng)用預(yù)覽

    如果您要顯示敏感數(shù)據(jù),例如錢包金額,或者只是當(dāng)?shù)卿洷韱物@示插入的密碼清晰時(shí),當(dāng)您不在應(yīng)用程序中時(shí),您必須隱藏敏感數(shù)據(jù)。本文將利用Flutter實(shí)現(xiàn)切換應(yīng)用時(shí)隱藏應(yīng)用預(yù)覽,需要的可以參考一下
    2022-06-06
  • Android異常 java.lang.IllegalStateException解決方法

    Android異常 java.lang.IllegalStateException解決方法

    這篇文章主要介紹了Android異常 java.lang.IllegalStateException解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android頂欄定時(shí)推送消息

    Android頂欄定時(shí)推送消息

    在用安卓設(shè)備時(shí),經(jīng)常會(huì)應(yīng)用到彈出推送消息。接下來通過本文給大家介紹Android頂欄定時(shí)推送消息,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Android開發(fā)中button按鈕的使用及動(dòng)態(tài)添加組件方法示例

    Android開發(fā)中button按鈕的使用及動(dòng)態(tài)添加組件方法示例

    這篇文章主要介紹了Android開發(fā)中button按鈕的使用及動(dòng)態(tài)添加組件方法,涉及Android針對button按鈕的事件響應(yīng)及TextView動(dòng)態(tài)添加相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android實(shí)現(xiàn)粒子漩渦動(dòng)畫

    Android實(shí)現(xiàn)粒子漩渦動(dòng)畫

    粒子動(dòng)畫經(jīng)常用于大畫幅的渲染效果,實(shí)際上難度并不高,但是在使用粒子動(dòng)畫時(shí),必須要遵循的一些要素,起點(diǎn),矢量速度和符合運(yùn)動(dòng)學(xué)公式等,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01
  • Android中WebView的使用與后退鍵處理詳細(xì)講解

    Android中WebView的使用與后退鍵處理詳細(xì)講解

    博主自從開始寫安卓以來,一直飽受WebView的摧殘,好在網(wǎng)上一大堆的大神給出了他們成長路上遇到的坑以及一些解決辦法,這篇文章主要給大家介紹了關(guān)于Android中WebView的使用與后退鍵處理的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Android仿QQ個(gè)人標(biāo)簽添加與刪除功能

    Android仿QQ個(gè)人標(biāo)簽添加與刪除功能

    這篇文章主要為大家詳細(xì)介紹了Android仿QQ個(gè)人標(biāo)簽添加與刪除功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android 限制顯示小數(shù)點(diǎn)后兩位的實(shí)現(xiàn)方法

    Android 限制顯示小數(shù)點(diǎn)后兩位的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇Android 限制顯示小數(shù)點(diǎn)后兩位的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

大埔区| 台北市| 南开区| 承德县| 大石桥市| 山东| 娱乐| 南靖县| 天祝| 翼城县| 巧家县| 吉林省| 温宿县| 霍山县| 宜昌市| 城口县| 永川市| 水富县| 都匀市| 西城区| 鹰潭市| 襄汾县| 滦平县| 博乐市| 镇坪县| 积石山| 大理市| 蓬溪县| 锦屏县| 安远县| 安庆市| 繁昌县| 东乡族自治县| 平湖市| 天祝| 华阴市| 馆陶县| 清丰县| 沽源县| 榆树市| 吉安市|