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

Android開發(fā)中給EditText控件添加TextWatcher監(jiān)聽實(shí)現(xiàn)對輸入字?jǐn)?shù)的限制(推薦)

 更新時(shí)間:2016年11月22日 16:24:59   作者:鄒奇  
這篇文章主要介紹了Android開發(fā)中給EditText控件添加TextWatcher監(jiān)聽實(shí)現(xiàn)對輸入字?jǐn)?shù)的限制(推薦)的相關(guān)資料,需要的朋友可以參考下

 做這個(gè)功能是因?yàn)殚_發(fā)項(xiàng)目的時(shí)候,由于后臺(tái)接口的一些參數(shù)的值的長度有要求,不能超過多少個(gè)字符,所以在編輯框中輸入的字符是要有限制的。

下面就來看一下demo的實(shí)現(xiàn)過程:

首先,在xml控件中放置一個(gè)EditText控件,然后初始化該控件并對該控件添加文本監(jiān)聽。xml自己簡單的設(shè)計(jì)一下,代碼較為簡單,直接上代碼:

package com.example.edittext;
import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
private static final int LIMIT = 10;// 最大字?jǐn)?shù)限制
private EditText et_word_limit;// EditText控件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 獲取EditText控件
et_word_limit = (EditText) findViewById(R.id.editText1);
setListeners();// 編輯框添加文本監(jiān)聽
}
private void setListeners() {
// editText控件添加文本變化監(jiān)聽
et_word_limit.addTextChangedListener(new MyTextWatcher(et_word_limit, LIMIT, MainActivity.this));
}
}

上面的代碼中給EditText控件添加文本監(jiān)聽的時(shí)候,我用的是自定義的TextWatcher,需要傳過去的參數(shù)有三個(gè),方法為:

// editText控件添加文本變化監(jiān)聽
et_word_limit.addTextChangedListener(new MyTextWatcher(et_word_limit, LIMIT, MainActivity.this));

一個(gè)是EditText控件,即要添加監(jiān)聽的那個(gè)編輯框控件;

一個(gè)是字符的限制數(shù)目,即最多能在編輯框中輸入的內(nèi)容;

一個(gè)是當(dāng)前類的上下文對象。

當(dāng)然,你要是還想再添加一個(gè)TextView控件實(shí)時(shí)顯示輸入的字符個(gè)數(shù)的話,那就再傳一個(gè)參數(shù)過去就行。反正具體需求,具體實(shí)現(xiàn)就行了,變化也不大,自己學(xué)會(huì)變通。

最關(guān)鍵的類,自定義的TextWatcher類如下,代碼如下:

package com.example.edittext;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
/**
* 自定義MyTextWatcher類實(shí)現(xiàn)TextWatcher接口,并重寫相關(guān)方法
* 
* @author 鄒奇
*
*/
public class MyTextWatcher implements TextWatcher {
private int limit;// 字符個(gè)數(shù)限制
private EditText text;// 編輯框控件
private Context context;// 上下文對象
int cursor = 0;// 用來記錄輸入字符的時(shí)候光標(biāo)的位置
int before_length;// 用來標(biāo)注輸入某一內(nèi)容之前的編輯框中的內(nèi)容的長度
public MyTextWatcher(EditText text, int limit,
Context context) {
this.limit = limit;
this.text = text;
this.context = context;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
before_length = s.length();
}
/**
* s 編輯框中全部的內(nèi)容 、start 編輯框中光標(biāo)所在的位置(從0開始計(jì)算)、count 從手機(jī)的輸入法中輸入的字符個(gè)數(shù)
*/
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
cursor = start;
// Log.e("此時(shí)光標(biāo)的位置為", cursor + "");
}
@Override
public void afterTextChanged(Editable s) {
// 這里可以知道你已經(jīng)輸入的字?jǐn)?shù),大家可以自己根據(jù)需求來自定義文本控件實(shí)時(shí)的顯示已經(jīng)輸入的字符個(gè)數(shù)
Log.e("此時(shí)你已經(jīng)輸入了", "" + s.length());
int after_length = s.length();// 輸入內(nèi)容后編輯框所有內(nèi)容的總長度
// 如果字符添加后超過了限制的長度,那么就移除后面添加的那一部分,這個(gè)很關(guān)鍵
if (after_length > limit) {
// 比限制的最大數(shù)超出了多少字
int d_value = after_length - limit;
// 這時(shí)候從手機(jī)輸入的字的個(gè)數(shù)
int d_num = after_length - before_length;
int st = cursor + (d_num - d_value);// 需要?jiǎng)h除的超出部分的開始位置
int en = cursor + d_num;// 需要?jiǎng)h除的超出部分的末尾位置
// 調(diào)用delete()方法將編輯框中超出部分的內(nèi)容去掉
Editable s_new = s.delete(st, en);
// 給編輯框重新設(shè)置文本
text.setText(s_new.toString());
// 設(shè)置光標(biāo)最后顯示的位置為超出部分的開始位置,優(yōu)化體驗(yàn)
text.setSelection(st);
// 彈出信息提示已超出字?jǐn)?shù)限制
Toast.makeText(context, "已超出最大字?jǐn)?shù)限制", Toast.LENGTH_SHORT).show();
}
}
}

上面的代碼已經(jīng)給出了注釋,說的也很明白,下面說說我的思路吧!

首先,這個(gè)自定義的類需要實(shí)現(xiàn)TextWatcher接口,并重寫相關(guān)的方法。

這時(shí)候,需要先知道編輯框沒有輸入內(nèi)容之前里面的字符個(gè)數(shù),需要知道輸入內(nèi)容時(shí)候的光標(biāo)所在的位置,需要知道輸入內(nèi)容完畢后編輯框里的字符的個(gè)數(shù)。這些知道后就簡單了,最大限制數(shù)你是知道的;這時(shí)候只需要根據(jù)以上的一些數(shù)據(jù)來刪除超出部分字符就可以了。這個(gè)具體的實(shí)現(xiàn)方法寫在了

public void afterTextChanged(Editable s){} 

重寫的方法里面,關(guān)鍵的注釋都有,大家可以好好的研究一下,說不定會(huì)有更加簡單的方法。

以上所述是小編給大家介紹的Android開發(fā)中給EditText控件添加TextWatcher監(jiān)聽實(shí)現(xiàn)對輸入字?jǐn)?shù)的限制(推薦),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java & Android 格式化字符串詳解

    java & Android 格式化字符串詳解

    這篇文章主要介紹了java & Android 格式化字符串詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Android 實(shí)現(xiàn)圖片生成卷角和圓角縮略圖的方法

    Android 實(shí)現(xiàn)圖片生成卷角和圓角縮略圖的方法

    本篇文章主要介紹了Android 實(shí)現(xiàn)圖片生成卷角和圓角縮略圖的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android界面設(shè)計(jì)(APP設(shè)計(jì)趨勢 左側(cè)隱藏菜單右邊顯示content)

    Android界面設(shè)計(jì)(APP設(shè)計(jì)趨勢 左側(cè)隱藏菜單右邊顯示content)

    這文章講述了2013年未來的移動(dòng)APP設(shè)計(jì)趨勢,感覺挺有道理的:Android界面設(shè)計(jì)實(shí)現(xiàn)左側(cè)隱藏菜單右邊顯示content,感興趣的你可以了解下啊,希望本文對你的APP設(shè)計(jì)提高有所幫助哦
    2013-01-01
  • 一起動(dòng)手編寫Android圖片加載框架

    一起動(dòng)手編寫Android圖片加載框架

    這篇文章主要和大家一起動(dòng)手編寫Android圖片加載框架,從內(nèi)部原理到具體實(shí)現(xiàn)來詳細(xì)介紹如何開發(fā)一個(gè)簡潔而實(shí)用的Android圖片加載緩存框架,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 利用SpannableString和ImageSpan在textview中插入圖片的方法

    利用SpannableString和ImageSpan在textview中插入圖片的方法

    這篇文章主要為大家詳細(xì)介紹了利用SpannableString和ImageSpan在textview中插入圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android實(shí)現(xiàn)仿微軟系統(tǒng)加載動(dòng)畫效果

    Android實(shí)現(xiàn)仿微軟系統(tǒng)加載動(dòng)畫效果

    這篇文章主要介紹了Android實(shí)現(xiàn)仿微軟系統(tǒng)加載動(dòng)畫效果的方法,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-04-04
  • Android開發(fā) Activity和Fragment詳解

    Android開發(fā) Activity和Fragment詳解

    本文主要介紹Android開發(fā) Activity和Fragment,這里對Activity和Fragment的知識(shí)做了詳細(xì)講解,并附簡單代碼示例,有興趣的小伙伴可以參考下
    2016-08-08
  • Android ProgressDialog的實(shí)例詳解

    Android ProgressDialog的實(shí)例詳解

    這篇文章主要介紹了Android ProgressDialog的實(shí)例詳解的相關(guān)資料,Android 開發(fā)項(xiàng)目的時(shí)候經(jīng)常會(huì)遇到耗時(shí)的操作,這里就講下Android ProgressDialog的應(yīng)用,需要的朋友可以參考下
    2017-07-07
  • Flutter?Widget之NavigationBar使用詳解

    Flutter?Widget之NavigationBar使用詳解

    這篇文章主要為大家介紹了Flutter?Widget之NavigationBar使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android Koin2基本使用的那件事兒

    Android Koin2基本使用的那件事兒

    這篇文章主要給大家介紹了關(guān)于Android Koin2基本使用的那件事兒,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評論