1. 程式人生 > >Edittext的TextWatcher的屬性及edittext的密碼顯示與隱藏、Edittext密碼圓點格式替換成星號*的形式

Edittext的TextWatcher的屬性及edittext的密碼顯示與隱藏、Edittext密碼圓點格式替換成星號*的形式

之前在專案中多次使用到editext中的這些屬性,特別是在專案中的註冊、登入、忘記密碼的功能中.....,今天正好群中有個剛入門的群友再問,自己也來記錄下,也希望對剛入門的朋友有些幫助。

1、edittext的密碼顯示與隱藏(這個功能其實很簡單的)

1)、簡單的佈局

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
    <EditText
android:id="@+id/et_read"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:inputType="textPassword" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageView
android:id="@+id/iv_eyes" android:layout_width="50dp" android:layout_height="50dp" android:scaleType="centerInside" android:src="@mipmap/icon_eyes_close" /> </LinearLayout>

2)、edittext的簡單程式碼

這個功能時Edittext+ImageView完成的

iv_eyes.setOnClickListener(new View.OnClickListener() {
    @Override
public void 
onClick(View v) { if (isSure) { iv_eyes.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.icon_eyes_open)); et_read.setSelection(et_read.getText().toString().length()); et_read.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); isSure = !isSure; } else { iv_eyes.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.icon_eyes_close)); setEditTextPassWordShowStyle(et_read); et_read.setSelection(et_read.getText().toString().length()); isSure = !isSure; } } });

2、Edittext密碼圓點格式替換成星號*的形式

使EditeText密碼的圓點形式換成星號*的簡單程式碼:

public void setEditTextPassWordShowStyle(EditText et) {
    et.setTransformationMethod(new PasswordCharSequenceStyle());
}

public class PasswordCharSequenceStyle extends PasswordTransformationMethod {
    @Override
public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
}

    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;
        public PasswordCharSequence(CharSequence source) {
            mSource = source;
}

        public char charAt(int index) {
            return '*';
}

        public int length() {
            return mSource.length();
}

        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end);
}
    }
}

3、Edittext的TextWatcher的屬性

這個屬性適合edittext需要在它輸入中的做監聽的功能,例如:在edittext輸入中監聽輸入的長度、輸入內容時顯示刪除圖示,輸入完成時隱藏刪除圖示。例子如下

簡單的佈局如下:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
    <EditText
android:id="@+id/et_write"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:drawablePadding="-30dp"
android:inputType="text"
android:text="" />
    <ImageView
android:id="@+id/iv_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="-50dp"
android:scaleType="centerInside"
android:src="@mipmap/ic_search_delete"
android:visibility="gone" />
</LinearLayout>

簡單的程式碼:

et_wirite.addTextChangedListener(new TextWatcher() {
    @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        iv_del.setVisibility(View.GONE);
}

    @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
        iv_del.setVisibility(View.VISIBLE);
}

    @Override
public void afterTextChanged(Editable s) {
        iv_del.setVisibility(View.VISIBLE);
}
});
iv_del.setOnClickListener(new View.OnClickListener() {
    @Override
public void onClick(View v) {
        et_wirite.setText("");
iv_del.setVisibility(View.GONE);
}
});

以上就是這些簡單的功能。

簡單的demo,已經驗證無誤:https://download.csdn.net/download/smxueer/10411816