Bunun daha eski olabileceğini biliyorum, ancak birlikte InputTypeve app:passwordToggleEnabled="true"birlikte kullandığımda bu konuyla ilgili bir şeye girdim .
Yani, bunu yazmak, buradaki birine yardımcı olabilir.
app:passwordToggleEnabledParola giriş alanı için seçenekle birlikte parola alanına özel bir yazı tipi kullanmak istiyorum . Ancak 27.1.1 (bunu yazarken) destek kütüphanesinde çöküyordu.
Kod aşağıdaki gibiydi,
<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>
Yukarıdaki kod inputTypeXML'de tanımlanmamış
EditText password = (EditText) findViewById(R.id.password);
password.setTransformationMethod(new PasswordTransformationMethod());
Ve Java'da, girdi türünün setTransformationMethodözelliklerini edinmeme yardımcı olacak textPasswordve ayrıca özel yazı tipi stilim için mutluyum.
Ancak, aşağıda belirtilen kilitlenme, tüm API düzeylerinde 27.1.1 destek kitaplığı ile gerçekleşti.
java.lang.NullPointerException: Boş bir nesne başvurusunda 'void android.support.design.widget.CheckableImageButton.setChecked (boolean)' sanal yöntemini çağırmayı deneyin
Bu onRestoreInstanceStateiç TextInputLayoutsınıf nedeniyle çöküyordu .
Adımları Yeniden Oluşturma: Parola görünürlüğünü değiştirin ve uygulamayı en aza indirin ve son uygulamalardan açın. Uh, ho Çöktü!
Tek ihtiyacım olan parola giriş alanında varsayılan parola değiştirme seçeneği (destek kitaplığını kullanarak) ve özel yazı tipi.
Bir süre sonra, aşağıdaki gibi yaparak anladım,
<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'de eklendi 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
Yukarıdaki java kodunda,
Özel yazı tipini kullanıcı adından aldım EditTextve TextInputLayoutşifre alanına uyguladım . Şimdi EditText, TextInputLayoutözelliği alacağı için yazı tipini parolaya açıkça ayarlamanıza gerek yoktur .
Ayrıca, kaldırdım password.setTransformationMethod(new PasswordTransformationMethod());
Bu şekilde passwordToggleEnabledçalışıyor, özel yazı tipi de çöküyor ve güle güle. Umarım bu konu gelecek destek sürümlerinde giderilecektir.