用ImageView图片去控制显示EditView显示隐藏密码
时间: 2023-09-13 12:03:50 浏览: 160
你可以使用一个 ImageView 来控制 EditText 显示和隐藏密码。在点击 ImageView 时,切换 EditText 的输入类型即可。
首先,在布局文件中添加一个 ImageView 和一个 EditText,例如:
```
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/password_edittext"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Password"
android:inputType="textPassword"/>
<ImageView
android:id="@+id/show_password_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_show_password"/>
</LinearLayout>
```
然后,在代码中获取 ImageView 和 EditText,并在 ImageView 的点击事件中切换 EditText 的输入类型:
```
ImageView showPasswordImageView = findViewById(R.id.show_password_imageview);
EditText passwordEditText = findViewById(R.id.password_edittext);
showPasswordImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int inputType = passwordEditText.getInputType();
if (inputType == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
passwordEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
showPasswordImageView.setImageResource(R.drawable.ic_show_password);
} else {
passwordEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
showPasswordImageView.setImageResource(R.drawable.ic_hide_password);
}
// move cursor to the end of the text
passwordEditText.setSelection(passwordEditText.getText().length());
}
});
```
这里需要注意的是,当切换输入类型时,EditText 中的光标位置会丢失,所以需要在切换后将光标移动到文本末尾。
阅读全文