按下按钮时查看密码edittext的值

时间:2015-01-28 06:25:34

标签: android

如何查看输入类型为"密码"的edittext视图的值。当我点击一个按钮,当我释放按钮时,文本显示会回到不可读的格式?就像微软在Windows 8中点击" eye"它位于密码字段旁边。

由于

5 个答案:

答案 0 :(得分:52)

我找到了设计支持库用户的最佳解决方案之一:

使用最新的Support Library v24.2.0非常容易实现。

您需要做的只是:

  1. 将设计库添加到依赖项

    dependencies {
         compile "com.android.support:design:24.2.0"
    }
    
  2. TextInputEditTextTextInputLayout

    结合使用
    <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>
    
  3. passwordToggleEnabled属性可以胜任!

    1. 在您的根布局中,请不要忘记添加xmlns:app="http://schemas.android.com/apk/res-auto"

    2. 您可以使用以下方式自定义密码切换:

    3. app:passwordToggleDrawable - 可绘制用作密码输入可见性切换图标 app:passwordToggleTint - 用于密码输入可见性切换的图标 app:passwordToggleTintMode - 用于应用背景色调的混合模式。

      TextInputLayout documentation中的更多详情。

      enter image description here

答案 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>