Saya tahu ini mungkin yang lebih tua tetapi saya telah menemukan sesuatu yang berhubungan dengan masalah ini ketika saya menggunakan InputTypedan app:passwordToggleEnabled="true"bersama - sama.
Jadi, tulis ini, karena dapat membantu seseorang di sini.
Saya ingin menggunakan bidang font khusus untuk kata sandi bersama dengan app:passwordToggleEnabledopsi untuk bidang input kata sandi saya. Tetapi dalam 27.1.1 (saat menulis ini) mendukung perpustakaan, itu menabrak.
Jadi kodenya seperti di bawah ini,
<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>
Kode di atas tidak inputTypedidefinisikan dalam XML
EditText password = (EditText) findViewById(R.id.password);
password.setTransformationMethod(new PasswordTransformationMethod());
Dan di Jawa, setTransformationMethodakan membantu saya mendapatkan properti textPasswordtipe input dan juga saya senang gaya font kustom saya.
Tetapi kerusakan yang disebutkan di bawah ini terjadi di semua level API dengan 27.1.1 perpustakaan dukungan.
java.lang.NullPointerException: Mencoba untuk memanggil metode virtual 'void android.support.design.widget.CheckableImageButton.setChecked (boolean)' pada referensi objek nol
Ini crash karena kelas onRestoreInstanceStatedalam TextInputLayout.
Langkah-Langkah Reproduksi: Ubah visibilitas kata sandi dan perkecil aplikasi dan buka dari aplikasi terbaru. Eh, ho Hancur!
Yang saya butuhkan adalah opsi sakelar kata sandi default (menggunakan perpustakaan dukungan) dan font khusus di bidang input kata sandi.
Setelah beberapa waktu, cari tahu dengan melakukan seperti di bawah ini,
<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>
Dalam XML, ditambahkan 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
Dalam kode java di atas,
Saya memperoleh jenis huruf khusus dari nama pengguna EditTextdan menerapkannya ke TextInputLayoutbidang kata sandi. Sekarang Anda tidak perlu mengatur jenis huruf secara eksplisit ke kata sandi EditTextkarena akan memperoleh TextInputLayoutproperti.
Juga, saya dihapus password.setTransformationMethod(new PasswordTransformationMethod());
Dengan melakukan cara ini, passwordToggleEnabledberfungsi, font kustom juga diterapkan dan bye-bye ke crash. Semoga masalah ini akan diperbaiki dalam rilis dukungan mendatang.