修改文字 密码 切换安卓

新手上路,请多包涵

我试图在输入类型为文本密码的编辑文本中向用户显示键入的密码。

我像这样在切换图标上实现了 gesturelistener-

 public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (view.getId())
        {
            case R.id.ivPasswordToggle:

                switch ( motionEvent.getAction() ) {
                    case MotionEvent.ACTION_DOWN:
                        Toast.makeText(getContext(),"show",Toast.LENGTH_SHORT).show();
                        etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                        break;
                    case MotionEvent.ACTION_UP:
                        etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
                        Toast.makeText(getContext(),"hide",Toast.LENGTH_SHORT).show();
                        break;
                }
                break;
        }
        return true;
    }

我不知道出了什么问题,我们将不胜感激。

原文由 Apoorv Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 384
2 个回答

(针对 AndroidX 更新)

自支持库 v24.2.0。你可以很容易地做到这一点

你需要做的只是:

  1. 将设计库添加到您的依赖项
    dependencies {
        implementation "com.google.android.material:material:1.2.1"
    }

  1. 使用 TextInputEditText 结合 TextInputLayout
     <com.google.android.material.textfield.TextInputLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/etPasswordLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password_hint"
            android:inputType="textPassword"/>
    </com.google.android.material.textfield.TextInputLayout>

passwordToggleEnabled 属性将使密码切换出现

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

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

app:passwordToggleDrawable - 可绘制用作密码输入可见性切换图标。

app:passwordToggleTint - 用于密码输入可见性切换的图标。

app:passwordToggleTintMode - 用于应用背景色调的混合模式。

TextInputLayout 文档 中有更多详细信息。

在此处输入图像描述

原文由 Javier Vieira 发布,翻译遵循 CC BY-SA 4.0 许可协议

请尝试此代码。

 public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (view.getId())
        {
            case R.id.ivPasswordToggle:

                switch ( motionEvent.getAction() ) {
                    case MotionEvent.ACTION_DOWN:
                        Toast.makeText(getContext(),"show",Toast.LENGTH_SHORT).show();
                         etPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                        break;
                    case MotionEvent.ACTION_UP:
                         etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
                        Toast.makeText(getContext(),"hide",Toast.LENGTH_SHORT).show();
                        break;
                }
                break;
        }
        return true;
    }

我希望它能奏效,谢谢。

原文由 user3539940 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏