ฉันรู้ว่านี้อาจจะเป็นคนเก่า แต่ฉันได้ humped เป็นสิ่งที่เกี่ยวข้องกับปัญหานี้เมื่อฉันใช้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 (บูลีน)' ในการอ้างอิงวัตถุ null
นี่คือความล้มเหลวเนื่องจากการ เรียน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
นี้ใช้งานได้แบบอักษรที่กำหนดเองจะถูกนำไปใช้และลาก่อนถึงความผิดพลาด หวังว่าปัญหานี้จะได้รับการแก้ไขในรุ่นที่จะมีการสนับสนุน