Как мне расположить пароль, который невозможно восстановить в Android?

#java #android #xml #passwords #android-drawable

#java #Android #xml #пароли #android-доступный для рисования

Вопрос:

По следующей ссылке показана основная проблема (ссылка) Как вы можете видеть, значок видимости пароля и значок проверки совпадают (когда он появляется динамически). Я хочу знать простой способ расположить значки так, чтобы они работали вместе, возможно ли это?

Переключение пароля

     <com.google.android.material.textfield.TextInputLayout
        android:id="@ id/textInputLayoutWifiPW"
        android:layout_width="600dp"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/textInputLayoutWifiSSID"
        app:passwordToggleDrawable="@drawable/passwordtoggle"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/md_blue_500">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@ id/password"
            android:layout_width="568dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="16dp"

            android:fontFamily="sans-serif"
            android:hint="@string/password"
            android:inputType="textPassword"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@ id/SSID" />
  

Методы проверки

 private void validateWIFI(final Context context) {
        if (SSID.length() == 0 ) {
            dialogButtonTrueOrFalse(mDialog, false);
            SSID.setError(context.getString(R.string.error_ssid_empty));
        }else if (PWD.length() > 0 amp;amp; PWD.length() < 8) {
            dialogButtonTrueOrFalse(mDialog, false);
            PWD.setError(context.getString(R.string.error_pwd_length));
        }else {
            dialogButtonTrueOrFalse(mDialog,true);
        }
    }
    public void dialogButtonTrueOrFalse(AlertDialog mDialog, Boolean button){
        if (button){
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setClickable(true);
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
        }else if (!button){
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setClickable(false);
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
        }
    }
  

Ответ №1:

для изменения, которое можно отобразить, создайте селектор, как показано ниже

password_toggle_drawable.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_password_visible" android:state_checked="true"/>
    <item android:drawable="@drawable/ic_password_hidden"/>
</selector>
  

затем присвоите TextInputLayout, как показано ниже:

 <android.support.design.widget.TextInputLayout
    android:id="@ id/PasswordLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    app:passwordToggleEnabled="true"
    **app:passwordToggleDrawable="@drawable/password_toggle_drawable"**
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.design.widget.CommonTextInputEditText
        android:id="@ id/PasswordEditText"
        android:padding="0dp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
  

для определения высоты я использовал приведенный ниже код после раздувания:

 CheckableImageButton text_input_password_toggle = (CheckableImageButton) PasswordLayout().findViewById(android.support.design.R.id.text_input_password_toggle);
text_input_password_toggle.setMinimumHeight(0);
PasswordEditText().setMinHeight(0);
PasswordEditText().setMinimumHeight(0);
  

Ответ №2:

я думаю, вы установили ошибку в CommonTextInputEditText, и лучше, чтобы вы установили ошибку TextInputLayout вместо вашего CommonTextInputEditText в ваших java-кодах

 TextInputLayout  passwordInputLayout =findViewById(R.id.textInputLayoutWifiPW);
passwordInputLayout.setError("your textError");
  

вы можете использовать это указание, чтобы узнать о

также вы можете установить errorstyle для вашего редактируемого текста и добавить к нему поля

 yourEditText.setError(Html.fromHtml("<//todo...'>this is the error</font>"));