您可能会说这是重复的,但事实并非如此。实际上,我找到了解决方案,但没有一个能很好地工作。最后一种解决方案是在其中使用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
中,从而引起冲突(默认情况下TextInputLayout
为ltr
),这使切换按钮覆盖了editText
。顺便说一下,当我将editText
放在TextInputLayout
内时,setTransformationMethod(new PasswordTransformationMethod())
也可以完美工作,尽管我不再需要它了!
感谢大家的参与。
答案 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