如何查看输入类型为"密码"的edittext视图的值。当我点击一个按钮,当我释放按钮时,文本显示会回到不可读的格式?就像微软在Windows 8中点击" eye"它位于密码字段旁边。
由于
答案 0 :(得分:52)
我找到了设计支持库用户的最佳解决方案之一:
使用最新的Support Library v24.2.0非常容易实现。
您需要做的只是:
将设计库添加到依赖项
dependencies {
compile "com.android.support:design:24.2.0"
}
将TextInputEditText
与TextInputLayout
<android.support.design.widget.TextInputLayout
android:id="@+id/etPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
android:layout_marginBottom="@dimen/login_spacing_bottom">
<android.support.design.widget.TextInputEditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/fragment_login_password_hint"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
passwordToggleEnabled
属性可以胜任!
在您的根布局中,请不要忘记添加xmlns:app="http://schemas.android.com/apk/res-auto"
您可以使用以下方式自定义密码切换:
app:passwordToggleDrawable
- 可绘制用作密码输入可见性切换图标
app:passwordToggleTint
- 用于密码输入可见性切换的图标
app:passwordToggleTintMode
- 用于应用背景色调的混合模式。
答案 1 :(得分:29)
yourButton.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch ( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
editText.setInputType(InputType.TYPE_CLASS_TEXT);
break;
case MotionEvent.ACTION_UP:
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
break;
}
return true;
}
});
答案 2 :(得分:4)
我喜欢目前的答案!只是为了补充,如果你有一个CheckBox
,那么(根据我)使用OnCheckedListener
的好习惯就像下面这样:
CheckBox box = (CheckBox)findViewById(R.id.dialog_checkBox_showPassword);
EditText password = (EditText) findViewById(R.id.dialog_editText_password);
box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
if(checked){
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
else{
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
}
}
});
答案 3 :(得分:2)
按下按钮,设置passwordField.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
。释放按钮时,设置passwordField.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT );
答案 4 :(得分:0)
这对我有用
dependencies {implementation 'com.google.android.material:material:1.2.1'}
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:passwordToggleEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_register_password_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"/>
</com.google.android.material.textfield.TextInputLayout>