Android EditText,切换密码可见性?

时间:2019-01-02 06:39:22

标签: android android-edittext

您可能会说这是重复的,但事实并非如此。实际上,我找到了解决方案,但没有一个能很好地工作。最后一种解决方案是在其中使用TextInputLayout加上EditText,但是有没有办法将切换按钮移到EditText的另一侧?如果没有,那么对我来说毫无用处。

 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="130dp"
    android:layoutDirection="rtl"
    app:passwordToggleEnabled="true">

    <EditText
        android:id="@+id/edlrPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        android:paddingRight="10dp"
        android:paddingLeft="10dp"
        android:layoutDirection="rtl"
        android:textAlignment="viewStart"
        android:inputType="textPassword"
        android:maxLines="1"
        android:textSize="14sp" />

</android.support.design.widget.TextInputLayout>

同样,问题在于切换按钮放置在EditText上,使其部分不可见。

我也尝试过以下代码:

if (b)
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
else 
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);

我也尝试了这段代码:

 if (b)
     editText.setInputType(InputType.TYPE_CLASS_TEXT);
 else
     editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

两者都可以进行第一次更改,然后EditText中的文本始终保持可见。 我该怎么办?任何帮助表示赞赏。

更新:所以我只是注意到我需要将android:layoutDirection="rtl"添加到TextInputLayout中!以前,我仅将其添加到editText中,从而引起冲突(默认情况下TextInputLayoutltr),这使切换按钮覆盖了editText。顺便说一下,当我将editText放在TextInputLayout内时,setTransformationMethod(new PasswordTransformationMethod())也可以完美工作,尽管我不再需要它了!

感谢大家的参与。

3 个答案:

答案 0 :(得分:2)

app:passwordToggleEnabled="true"内的EditText中添加TextInputLayout。它将切换密码可见性,反之亦然。删除您的Java代码

答案 1 :(得分:0)

嗨,您可以替换此代码并享受他的乐趣!

  

edtPassword->您的编辑文本(密码)

     

show_password-> imageView用于显示密码

implementation 'androidx.recyclerview:recyclerview:1.0.0'

答案 2 :(得分:0)

这是实现这种目标的另一种方法 您需要向左设置可绘制对象,并且需要通过&&听其点击事件 在那之后 这个答案 https://stackoverflow.com/a/3685867/10561246