您可以说这是重复的,但事实并非如此。事实上,我找到了解决方案,但没有一个能完美工作。最后的解决方案是使用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())
也能很好地工作,尽管我不再需要它了!
感谢大家的参与。
在TextInputLayout
中的EditText
中添加app:passwordToggleEnabled="true"
。它将切换密码可见性,反之亦然。删除您的java代码
hi您可以替换此代码并享受它!
edtPassword->您的编辑文本(密码)
show_password->image查看显示您的密码
public void setPassword_show() {
if (!edtPassword.getText().toString().equals("")) {
if (show_password.getTag().toString().equals(IS_ONE_CLICK)) {
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
if (Build.VERSION.SDK_INT >= 21)
show_password.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_visibility_black_24dp));
else
show_password.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_visibility_black_24dp,
null));
show_password.setTag((Object) IS_TWO_CLICK);
} else if (show_password.getTag().toString().equals(IS_TWO_CLICK)) {
edtPassword.setInputType(129);
if (Build.VERSION.SDK_INT >= 21)
show_password.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_visibility_off_black_24dp));
else
show_password.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_visibility_off_black_24dp, null));
show_password.setTag((Object) IS_ONE_CLICK);
}
}
}
这里有另一种实现你需要设置drawable left,你需要通过edittext.setOnTouchListener
收听它的点击事件在那之后这个答案https://stackoverflow.com/a/3685867/10561246