Edittext的TextWatcher的屬性及edittext的密碼顯示與隱藏、Edittext密碼圓點格式替換成星號*的形式
阿新 • • 發佈:2019-02-16
之前在專案中多次使用到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" /> <ImageViewandroid: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 voidonClick(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