在登錄頁、搜尋框等場景中,常需在 EditText 右側放置可點擊的圖標(如顯示/隱藏密碼、清空輸入、語音輸入)。Android 官方提供 drawableEnd / drawableRight 屬性,配合 OnTouchListener 即可實現交互。
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_visibility_off"
android:drawablePadding="12dp"
android:inputType="textPassword" />
editText.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_UP) {
int drawableEnd = editText.getCompoundDrawables()[2] != null ?
editText.getCompoundDrawables()[2].getBounds().width() : 0;
if (event.getRawX() >= (editText.getRight() - drawableEnd - editText.getPaddingEnd())) {
// 執行圖標點擊邏輯:切換密碼可見性、清空文字等
return true; // 消費事件
}
}
return false;
});
TextWatcher 動態顯示/隱藏清空圖標TextInputLayout 實現 Material Design 風格完整示例圖請參考原文附件截圖。