Я знаю, що це може бути і старше, але я намагався вирішити щось, що стосується цього питання, коли я використовував InputType
і app:passwordToggleEnabled="true"
разом.
Отже, написавши це, оскільки це може допомогти комусь тут.
Я хочу використовувати спеціальний шрифт для поля пароля разом з app:passwordToggleEnabled
опцією для мого поля введення пароля. Але в 27.1.1 (поки пишу це) бібліотека підтримки, вона вийшла з ладу.
Так що код був, як нижче,
<android.support.design.widget.TextInputLayout
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/_10dp"
android:layout_marginTop="@dimen/_32dp"
android:hint="@string/current_password"
android:textColorHint="@color/hint_text_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|left"
android:maxLines="1"
android:textAlignment="viewStart"
android:textColor="@color/black"
android:textColorHint="@color/camel"
android:textSize="@dimen/txt_16sp"
app:font_style="regular"
app:drawableEnd="@drawable/ic_remove_eye" />
</android.support.design.widget.TextInputLayout>
Вищевказаний код не inputType
визначається в XML
EditText password = (EditText) findViewById(R.id.password);
password.setTransformationMethod(new PasswordTransformationMethod());
І в Java setTransformationMethod
допоможе мені придбати властивості типу textPassword
введення, а також я задоволений своїм власним стилем шрифту.
Але нижчезазначений збій стався на всіх рівнях API з підтримкою бібліотеки 27.1.1.
java.lang.NullPointerException: спроба викликати віртуальний метод 'void android.support.design.widget.CheckableImageButton.setChecked (boolean)' у нульовій посилання на об'єкт
Це відбулося через onRestoreInstanceState
внутрішній TextInputLayout
клас.
Відтворити кроки: увімкніть видимість пароля та мінімізуйте програму та відкрийте її з останніх програм. Ух, хо розбився!
Все, що мені потрібно, - це параметр перемикання пароля за замовчуванням (за допомогою бібліотеки підтримки) та спеціальний шрифт у полі введення пароля.
Через деякий час з'ясували, як це робиться нижче,
<android.support.design.widget.TextInputLayout
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/_10dp"
android:layout_marginTop="@dimen/_32dp"
android:hint="@string/current_password"
android:textColorHint="@color/hint_text_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|left"
android:maxLines="1"
android:textAlignment="viewStart"
android:textColor="@color/black"
android:textColorHint="@color/camel"
android:textSize="@dimen/txt_16sp"
app:font_style="regular"
app:drawableEnd="@drawable/ic_remove_eye"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
У XML додано android:inputType="textPassword"
TextInputLayout inputPassword = findViewById(R.id.input_password);
EditText password = findViewById(R.id.password);
EditText userName = findViewById(R.id.user_name);
// Get the typeface of user name or other edit text
Typeface typeface = userName.getTypeface();
if (typeface != null)
inputLayout.setTypeface(typeface); // set to password text input layout
У наведеному вище коді Java,
Я придбав спеціальний шрифт від імені користувача EditText
і застосував його до TextInputLayout
поля пароля. Тепер не потрібно чітко встановлювати шрифт для пароля, EditText
оскільки він придбає TextInputLayout
властивість.
Також я зняв password.setTransformationMethod(new PasswordTransformationMethod());
Таким чином, passwordToggleEnabled
працює, спеціальний шрифт також застосовується і до побачення до аварії. Сподіваємось, це питання буде вирішено у майбутніх випусках підтримки.