Bunun daha eski olabileceğini biliyorum, ancak birlikte InputType
ve app:passwordToggleEnabled="true"
birlikte kullandığımda bu konuyla ilgili bir şeye girdim .
Yani, bunu yazmak, buradaki birine yardımcı olabilir.
app:passwordToggleEnabled
Parola 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 inputType
XML'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 textPassword
ve 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 onRestoreInstanceState
iç TextInputLayout
sı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 EditText
ve 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.