Android EditText, переключение видимости пароля? - PullRequest
0 голосов
/ 02 января 2019

Вы можете сказать, что это дублируется, но это не так. На самом деле я нашел решения, но ни одно не сработало идеально. Последнее решение использовало 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()) также отлично работает, хотя он мне больше не нужен!

Спасибо всем за участие.

Ответы [ 3 ]

0 голосов
/ 02 января 2019

привет, вы можете заменить этот код и наслаждаться им!

edtPassword -> ваш текст для редактирования (Пароль)

show_password -> imageView Для показа вашего пароля

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);
        }
    }
}
0 голосов
/ 02 января 2019

вот еще один способ добиться такого рода: вам нужно установить drawable влево, и вам нужно прослушать событие щелчка через edittext.setOnTouchListener, после этого следуйте этому ответу https://stackoverflow.com/a/3685867/10561246

0 голосов
/ 02 января 2019

Добавьте app:passwordToggleEnabled="true" в ваш EditText внутри TextInputLayout.это переключит видимость пароля и наоборот.удалите свой код Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...