Android 監(jiān)聽EditText的內(nèi)容變化

2023-03-31 13:44 更新

本節(jié)引言:

在前面我們已經(jīng)學(xué)過EditText控件了,本節(jié)來說下如何監(jiān)聽輸入框的內(nèi)容變化! 這個(gè)再實(shí)際開發(fā)中非常實(shí)用,另外,附帶著說下如何實(shí)現(xiàn)EditText的密碼可見 與不可見!好了,開始本節(jié)內(nèi)容!


1.監(jiān)聽EditText的內(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ā):

  • 1.內(nèi)容變化前
  • 2.內(nèi)容變化中
  • 3.內(nèi)容變化后

我們可以根據(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)效果圖:

77103245

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é)小結(jié):

本節(jié)就到這里,謝謝~


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號