国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

EditText限制輸入的字符數并彈出Toast提示字數已達上限

2019-11-07 23:57:05
字體:
來源:轉載
供稿:網友

大家對EditText這個控件并不陌生,它是一個可供我們輸入文本內容的輸入框。前些日子需要實現這樣一個需求:限制EditText中可以輸入的最大字符數為6,達到6時,用戶每按一次軟鍵盤就彈出一個Toast提示用戶,并且無法再輸入內容。就像下圖的效果:

這里寫圖片描述

一開始我是直接在布局文件中在使用android:maxLength的屬性將文本長度寫死,然后再到代碼中去監聽,但是這樣一來,監聽也就失去了意義了,因為無論用戶怎么輸入,EditText中容納的文本長度最長都是6,超過6時就不起作用了。所以我最終拋棄了這個寫法,不再把文本長度寫死了。現在就讓我們看看具體怎么實現吧。

新建一個工程,在MainActivity的布局里放置一個EditText:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.lindroid.edittextchangedemo.MainActivity"> <EditText android:id="@+id/edit" android:hint="請在此輸入內容" android:layout_width="match_parent" android:layout_height="wrap_content" /></RelativeLayout>

然后到代碼中實現EditText中的輸入監聽事件,即接口TextWatcher中的方法。由于我們需要監聽的是文本長度的變化,也就是文本輸入過程中的變化,所以復寫onTextChanged方法即可:

public class MainActivity extends AppCompatActivity { PRivate EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.edit); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() > 6){ //判斷EditText中輸入的字符數是不是已經大于6 editText.setText(s.toString().substring(0,6)); //設置EditText只顯示前面6位字符 editText.setSelection(6);//讓光標移至末端 Toast.makeText(MainActivity.this, "輸入字數已達上限", Toast.LENGTH_SHORT).show(); return; } } @Override public void afterTextChanged(Editable s) { } }); }}

代碼只有寥寥幾行,首先我們需要判斷用戶輸入的字符串長度是否已經超過了6(參數CharSequence 即EditText中輸入的字符串),如果超過了6,我們就只顯示前面6位字符,并彈出一條Toast告訴用戶 “輸入字數已達上限”,不能再輸入了。同時,為了用戶操作方便,比如可以刪除剛剛輸入的內容,我們將光標設置在文本的末端。

好了,整個Demo就這么簡單,其實我們就是把用戶輸入的內容先攔截下來,篩選之后再顯示到EditText上而已。

點擊下載Demo


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大新县| 桐梓县| 惠东县| 新津县| 江华| 温泉县| 建德市| 淮阳县| 东乡县| 阜平县| 龙陵县| 偃师市| 平顺县| 佛冈县| 镇安县| 石楼县| 海盐县| 罗城| 丰县| 南康市| 中山市| 襄城县| 义乌市| 宿松县| 陈巴尔虎旗| 卢龙县| 哈密市| 九寨沟县| 县级市| 莱西市| 迭部县| 深州市| 永寿县| 开封市| 历史| 淮南市| 固阳县| 环江| 巴中市| 武陟县| 嘉祥县|