Saya tahu ini mungkin yang lebih tua tetapi saya telah menemukan sesuatu yang berhubungan dengan masalah ini ketika saya menggunakan InputType
dan 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:passwordToggleEnabled
opsi 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 inputType
didefinisikan dalam XML
EditText password = (EditText) findViewById(R.id.password);
password.setTransformationMethod(new PasswordTransformationMethod());
Dan di Jawa, setTransformationMethod
akan membantu saya mendapatkan properti textPassword
tipe 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 onRestoreInstanceState
dalam 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 EditText
dan menerapkannya ke TextInputLayout
bidang kata sandi. Sekarang Anda tidak perlu mengatur jenis huruf secara eksplisit ke kata sandi EditText
karena akan memperoleh TextInputLayout
properti.
Juga, saya dihapus password.setTransformationMethod(new PasswordTransformationMethod());
Dengan melakukan cara ini, passwordToggleEnabled
berfungsi, font kustom juga diterapkan dan bye-bye ke crash. Semoga masalah ini akan diperbaiki dalam rilis dukungan mendatang.