W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
在前面我們已經(jīng)學(xué)過EditText控件了,本節(jié)來說下如何監(jiān)聽輸入框的內(nèi)容變化! 這個(gè)再實(shí)際開發(fā)中非常實(shí)用,另外,附帶著說下如何實(shí)現(xiàn)EditText的密碼可見 與不可見!好了,開始本節(jié)內(nèi)容!
由題可知,是基于監(jiān)聽的事件處理機(jī)制,好像前面的點(diǎn)擊事件是OnClickListener,文本內(nèi)容 變化的監(jiān)聽器則是:TextWatcher,我們可以調(diào)用EditText.addTextChangedListener(mTextWatcher); 為EditText設(shè)置內(nèi)容變化監(jiān)聽!
簡單說下TextWatcher,實(shí)現(xiàn)該類需實(shí)現(xiàn)三個(gè)方法:
public void beforeTextChanged(CharSequence s, int start,int count, int after);
public void onTextChanged(CharSequence s, int start, int before, int count);
public void afterTextChanged(Editable s);
依次會在下述情況中觸發(fā):
我們可以根據(jù)實(shí)際的需求重寫相關(guān)方法,一般重寫得較多的是第三個(gè)方法!
監(jiān)聽EditText內(nèi)容變化的場合有很多: 限制字?jǐn)?shù)輸入,限制輸入內(nèi)容等等~
這里給大家實(shí)現(xiàn)一個(gè)簡單的自定義EditText,輸入內(nèi)容后,有面會顯示一個(gè)叉叉的圓圈,用戶點(diǎn)擊后 可以清空文本框~,當(dāng)然你也可以不自定義,直接為EditText添加TextWatcher然后設(shè)置下刪除按鈕~
實(shí)現(xiàn)效果圖:
MainActivity.java
package com.jay.demo.edittextdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText edit_pawd;
private Button btnChange;
private boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit_pawd = (EditText) findViewById(R.id.edit_pawd);
btnChange = (Button) findViewById(R.id.btnChange);
edit_pawd.setHorizontallyScrolling(true); //設(shè)置EditText不換行
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(flag == true){
edit_pawd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
flag = false;
btnChange.setText("密碼不可見");
}else{
edit_pawd.setTransformationMethod(PasswordTransformationMethod.getInstance());
flag = true;
btnChange.setText("密碼可見");
}
}
});
}
}
editborder.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 設(shè)置透明背景色 -->
<solid android:color="#FFFFFF" />
<!-- 設(shè)置一個(gè)白色邊框 -->
<stroke
android:width="1px"
android:color="#FFFFFF" />
<!-- 設(shè)置一下邊距,讓空間大一點(diǎn) -->
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
本節(jié)就到這里,謝謝~
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: