เปลี่ยนประเภทอินพุตของ EditText จาก PASSWORD เป็น NORMAL & ในทางกลับกันโดยทางโปรแกรม


191

ในแอปพลิเคชันของฉันฉันมีEditTextประเภทอินพุตเริ่มต้นถูกตั้งค่าเป็นandroid:inputType="textPassword"deault มันมีCheckBoxทางด้านขวาซึ่งเมื่อตรวจสอบจะเปลี่ยนประเภทอินพุตของ EditText นั้นเป็น NORMAL PLAIN TEXT รหัสสำหรับนั่นคือ

password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

ปัญหาของฉันคือเมื่อไม่ได้ทำเครื่องหมายที่ช่องทำเครื่องหมายมันควรตั้งค่าประเภทอินพุตเป็น PASSWORD อีกครั้ง ฉันทำมันโดยใช้ -

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

แต่ข้อความภายใน edittext นั้นยังคงปรากฏให้เห็น และสำหรับความประหลาดใจเมื่อฉันเปลี่ยน orienatation มันจะตั้งค่าประเภทการป้อนข้อมูลเป็น PASSWORD โดยอัตโนมัติและข้อความภายในเป็นสัญลักษณ์แสดงหัวข้อย่อย (แสดงเหมือนรหัสผ่าน)

มีวิธีใดบ้างในการบรรลุเป้าหมายนี้?


วิธีตั้งค่าประเภทอีเมลสำหรับแก้ไขข้อความ mailEdt.setInputType (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS); ดูเหมือนจะไม่ทำงาน
Mahendran

5
mailEdt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);ใช้ ได้ผลสำหรับฉัน
Rajkiran

คำตอบ:


347

เพียงแค่สำหรับคนที่กำลังมีปัญหาเดียวกัน เพียงเพิ่มแอททริบิวต์พิเศษให้กับ EditText โดยทางโปรแกรมและคุณทำเสร็จแล้ว

password.setInputType(InputType.TYPE_CLASS_TEXT |
    InputType.TYPE_TEXT_VARIATION_PASSWORD);

สำหรับรหัสผ่านตัวเลข (พิน)

password.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

นอกจากนี้ตรวจสอบให้แน่ใจว่าเคอร์เซอร์อยู่ท้ายข้อความใน EditText เนื่องจากเมื่อคุณเปลี่ยนประเภทอินพุตเคอร์เซอร์จะถูกตั้งค่าเป็นจุดเริ่มต้นโดยอัตโนมัติ ดังนั้นฉันขอแนะนำให้ใช้รหัสต่อไปนี้:

et_password.setInputType(InputType.TYPE_CLASS_TEXT | 
    InputType.TYPE_TEXT_VARIATION_PASSWORD);
et_password.setSelection(et_password.getText().length());

เมื่อใช้การผูกข้อมูลคุณสามารถใช้รหัสต่อไปนี้

<data>
        <import type="android.text.InputType"/>
.
.
.
<EditText
android:inputType='@{someViewModel.isMasked ? 
(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD) :
InputType.TYPE_CLASS_TEXT }'

หากใช้ Kotlin

password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD

2
ดังที่ระบุไว้สำหรับคำตอบที่ถูกต้อง - แทนที่จะเปลี่ยนการเลือกคุณสามารถใช้InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
mente

17
ฉันไม่เข้าใจว่าทำไมในโลก Android เลือกที่จะย้ายเคอร์เซอร์มันทำให้นักพัฒนาชีวิตยากขึ้น
Rafael Sanches

2
+1สำหรับที่นี่เป็นคำตอบที่ดีที่สุด
nAkhmedov

2
หากผู้ใช้กำลังแก้ไขตรงกลางของฟิลด์รหัสผ่านสิ่งนี้จะวางเคอร์เซอร์ไว้ที่ท้าย ผมขอแนะนำให้ใช้editText.getSelectionStart()และeditText.getSelectionEnd()มีsetSelection(start, end)การหลีกเลี่ยงปัญหานี้
JM Lord

1
ผู้คนไม่ควรมองลงไปอีก นี่เป็นคำตอบที่ดีที่สุดและขอแนะนำให้คุณทำการเปลี่ยนแปลง @JM Lord ที่แนะนำ
ทำเครื่องหมาย

56

ใช้รหัสนี้เพื่อเปลี่ยนรหัสผ่านเป็นข้อความและในทางกลับกัน

mCbShowPwd.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // checkbox status is changed from uncheck to checked.
                if (!isChecked) {
                        // hide password
                    mEtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
                } else {
                        // show password
                    mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }
            }
        });

สำหรับตัวอย่างโค้ดแบบเต็มโปรดดูที่http://www.codeproject.com/Tips/518641/Show-hide-password-in-a-edit-text-view-password-ty


6
HideReturnsTransformationMethod.getInstance () แสดงรหัสผ่านและ PasswordTransformationMethod.getInstance () ซ่อนรหัสผ่าน ... การใช้งานถูกต้อง แต่ความคิดเห็นกลับด้าน
Ahmed Adel Ismail

2
นี่คือคำตอบที่ดีที่สุดในการทำให้เสร็จสมบูรณ์เพียงเลื่อนเคอร์เซอร์ไปที่อักขระตัวสุดท้ายด้วย: txtpassword.setSelection (txtpassword.getText (). length ());
Josh

สักครู่ดูเหมือนว่าจะไม่ทำงานเนื่องจากมีการเน้นจุดโดย EL-conte De-monte TereBentikh คำแนะนำของ Josh ก็มีประโยชน์เช่นกัน นี่คือคำตอบที่ดีที่สุด
Ajay

ง่ายและดีที่สุด thnks
Sam

1
คุณเป็นศาสตราจารย์เพื่อนของฉัน! ด้วยวิธีนี้คุณจะไม่ประสบปัญหากับตัวอักษรหลังจากเปลี่ยนกลับไปเป็นโหมดรหัสผ่าน (ข้อความที่ปลอดภัย)
Tzegenos


12

อีกตัวอย่างที่ง่ายโดยใช้ImageViewเพื่อสลับการมองเห็นโดยใช้โค้ดน้อยลงเนื่องจากการกำหนดค่าInputTypeเดียวเราต้องใช้ตัวดำเนินการเท่าเทียมกันเท่านั้น:

EditText inputPassword = (EditText) findViewById(R.id.loginPassword);
ImageView inputPasswordShow = (ImageView) findViewById(R.id.imagePasswordShow);
inputPasswordShow.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
         if(inputPassword.getInputType() == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
              inputPassword.setInputType( InputType.TYPE_CLASS_TEXT |
                                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
         }else {
              inputPassword.setInputType( InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
         }
         inputPassword.setSelection(inputPassword.getText().length());
    }
});

การแทนที่:

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

ด้วย:

InputType.TYPE_CLASS_TEXT

จะให้ผลลัพธ์เดียวกัน แต่คำที่สั้นกว่า


12
Checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // checkbox status is checked.
                if (isChecked) {
                        //password is visible
 PasswordField.setTransformationMethod(HideReturnsTransformationMethod.getInstance());     
                } else {
                        //password gets hided
             passwordField.setTransformationMethod(PasswordTransformationMethod.getInstance());       
                }
            }
        });

6

สิ่งนี้ใช้ได้กับฉัน:

mytext.setInputType(InputType.TYPE_CLASS_NUMBER);

โปรดอ่านคำถามก่อน ฉันต้องการสลับระหว่างฟิลด์รหัสผ่านและฟิลด์ข้อความ นี่จะให้ฟิลด์ข้อความเป็นตัวเลข
Rajkiran

6

ตกลงดังนั้นหลังจากผ่านไปหลายชั่วโมงของการลองใช้มันในที่สุด ด้านล่างเป็นรหัส ..

  buttons.get(2).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
       if(buttons.get(2).getText().toString().equalsIgnoreCase(getResources().getString(R.string.show))){
           editTexts.get(1).setInputType(InputType.TYPE_CLASS_TEXT);
           editTexts.get(1).setSelection(editTexts.get(1).getText().length());
           buttons.get(2).setText(getResources().getString(R.string.hide));
        }else{
           editTexts.get(1).setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
           //editTexts.get(1).setTransformationMethod(PasswordTransformationMethod.getInstance());
           editTexts.get(1).setSelection(editTexts.get(1).getText().length());
           buttons.get(2).setText(getResources().getString(R.string.show));
       }

    }
});

คำอธิบาย: - ฉันมีปุ่มพร้อมข้อความเริ่มต้นตามที่แสดง หลังจากเหตุการณ์ onclick ที่มันตรวจสอบว่าข้อความของปุ่มจะแสดง หากมีการแสดงจากนั้นเปลี่ยนประเภทอินพุตให้ปรับตำแหน่งเคอร์เซอร์และตั้งค่าข้อความใหม่เป็นซ่อนอยู่

เมื่อซ่อน ... กำลังย้อนกลับเช่นซ่อนรหัสผ่านปรับเคอร์เซอร์และตั้งค่าข้อความตามที่แสดง และนั่นคือมัน มันทำงานเหมือนจับใจ


6

สำหรับผู้ใช้ kotlin:

password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD

และนี่จะซ่อนสัญลักษณ์รหัสผ่านเท่านั้น
CoolMind

5

ใช้รหัสนี้เพื่อเปลี่ยนรหัสผ่านเป็นข้อความและในทางกลับกัน รหัสนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ลองนี้ ..

EditText paswrd=(EditText)view.findViewById(R.id.paswrd);

CheckBox showpass=(CheckBox)view.findViewById(R.id.showpass);
showpass.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    if(((CheckBox)v).isChecked()){
        paswrd.setInputType(InputType.TYPE_CLASS_TEXT);

    }else{
        paswrd.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
    }

}
});

แตกต่างจากคำตอบที่ยอมรับได้อย่างไร โปรดอ่านคำถามและคำตอบอย่างรอบคอบก่อนส่งสแปม
Rajkiran

3

นี่คือตัวจัดการ onClick แบบเต็มสำหรับรูปภาพ / ปุ่มเพื่อแสดง / ซ่อนรหัสผ่าน

    new OnClickListener() {
        @Override
        public void onClick(View v) {
            // current ursor position
            int cursorPosition = edtPassword.getSelectionStart();

            // toggles the control variable
            isPassworsVisible = !isPassworsVisible;

            // sets the image toggler inside edit text
            passwordVisible.setImageDrawable(getResources().getDrawable(isPassworsVisible ? R.drawable.ic_eye_checked : R.drawable.ic_eye_unchecked));

            // apply input type
            edtPassword.setInputType(isPassworsVisible ? InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

            // returns cursor to position
            edtPassword.setSelection(cursorPosition);
        }
    };

edtPassword.getSelectionStart()ขอบคุณสำหรับ
CoolMind

3

คุณลักษณะสลับรหัสผ่านการมองเห็นได้รับการเพิ่มการสนับสนุนรุ่นห้องสมุด 24.2.0 ช่วยให้คุณสามารถสลับรหัสผ่านตรงจากโดยไม่จำเป็นต้องเป็นEditTextCheckBox

คุณสามารถทำให้การทำงานที่พื้นเป็นครั้งแรกโดยการปรับปรุงการสนับสนุนรุ่นห้องสมุดของคุณเพื่อ 24.2.0 แล้วการตั้งค่ารหัสผ่านบนinputType TextInputEditTextนี่คือวิธีการทำ:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>

คุณสามารถรับข้อมูลเพิ่มเติมเกี่ยวกับคุณลักษณะใหม่ในเอกสารสำหรับนักพัฒนาซอฟต์แวร์TextInputLayout


3

ตั้งแต่ Support Library v24.2.0 คุณสามารถทำได้ง่ายมาก

สิ่งที่คุณต้องทำคือเพียงแค่:

  1. เพิ่มไลบรารีการออกแบบในการอ้างอิงของคุณ

    dependencies {
         compile "com.android.support:design:25.1.0"
    }
  2. ใช้TextInputEditTextร่วมกับTextInputLayout

    <android.support.design.widget.TextInputLayout
        android:id="@+id/etPasswordLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true">
    
        <android.support.design.widget.TextInputEditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password_hint"
            android:inputType="textPassword"/>
    </android.support.design.widget.TextInputLayout>

passwordToggleEnabled คุณลักษณะจะทำให้การสลับรหัสผ่านปรากฏขึ้น

  1. ในรูปแบบรูทของคุณอย่าลืมเพิ่ม xmlns:app="http://schemas.android.com/apk/res-auto"

  2. คุณสามารถปรับแต่งการสลับรหัสผ่านของคุณได้โดยใช้:

app:passwordToggleDrawable- Drawable เพื่อใช้เป็นไอคอนสลับการมองเห็นการป้อนรหัสผ่าน
app:passwordToggleTint- ไอคอนที่ใช้สำหรับสลับการมองเห็นการป้อนรหัสผ่าน
app:passwordToggleTintMode- โหมดการผสมใช้เพื่อปรับสีพื้นหลัง

รายละเอียดเพิ่มเติมในเอกสาร TextInputLayoutป้อนคำอธิบายรูปภาพที่นี่


2

การค้นหาโซลูชันที่คล้ายกันของ Visual Studio / Xamarin ทำให้ฉันเข้าสู่กระทู้นี้ ด้านล่างเป็นสิ่งที่ทำงานกับฉันด้วย Xamarin โปรดทราบว่าการใช้งานนี้จะเก็บTYPE_TEXT_FLAG_NO_SUGGESTIONSค่าสถานะเมื่อสลับระหว่างโหมด

EditText et = FindViewById<EditText>(Resource.Id.ET);

วิธีแสดงตัวอักษร: et.InputType = Android.Text.InputTypes.TextVariationVisiblePassword | Android.Text.InputTypes.TextFlagNoSuggestions;

ในการซ่อนตัวละคร: et.InputType = Android.Text.InputTypes.TextVariationPassword | Android.Text.InputTypes.ClassText;

ในการตั้งตำแหน่งให้จบ: int position = et.Text.Length; et.SetSelection(position, position);


วิธีใช้รหัสนี้if (edittext.getInputType() == (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD )){ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD ); }else{ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ); }สำหรับ Visual Studio / Xamarin ..
sun y

ฉันหมายถึงวิธีการรับ inputtype ของ edittext ใน if () เงื่อนไข .. ?
sun y

2

สถานการณ์แบบไดนามิกบางอย่างholder.edit_pin.setInputType(InputType.TYPE_CLASS_NUMBER);จะไม่ทำงานดังนั้นควรใช้ทั้งสองอย่างดีกว่า

holder.edit_pin.setInputType(InputType.TYPE_CLASS_NUMBER);
holder.edit_pin.setTransformationMethod(PasswordTransformationMethod.getInstance());

หมายเหตุ: สิ่งนี้เหมาะสำหรับเมื่อคุณใช้การควบคุมแบบไดนามิกเช่นการใช้ arrayaapter


2

หลังจากคุณsetInputTypeใส่รหัสผ่านคุณจะมีปัญหากับFONT
ต่อไปนี้เป็นวิธีแก้ปัญหาสำหรับรหัสผ่านแสดง / ซ่อนโดยไม่มีปัญหาแบบอักษร

protected void onCreate(Bundle savedInstanceState) {
    ...
    findViewById(R.id.button_show_hide_password).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isPasswordVisible(edtPassword)) {
                enableInputHiddenPassword(edtPassword);
            } else {
                enableInputVisiblePassword(edtPassword);
            }
            edtPassword.setSelection(edtPassword.getText().length());
        }
    });
}

final int INPUT_TYPE_VISIBLE_PASSWORD = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
final int INPUT_TYPE_HIDDEN_PASSWORD = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;

private boolean isPasswordVisible(EditText editText) {
    return editText.getInputType() == INPUT_TYPE_VISIBLE_PASSWORD;
}

private void enableInputVisiblePassword(EditText editText) {
    Typeface cache = editText.getTypeface();
    editText.setInputType(INPUT_TYPE_VISIBLE_PASSWORD);
    editText.setTypeface(cache);
}

private void enableInputHiddenPassword(EditText editText) {
    Typeface cache = editText.getTypeface();
    editText.setInputType(INPUT_TYPE_HIDDEN_PASSWORD);
    editText.setTypeface(cache);
}

หมายเหตุ: ฉันใช้InputType.TYPE_TEXT_VARIATION_PASSWORDแทนInputType.TYPE_CLASS_TEXTหรือHideReturnsTransformationMethodเพราะฉันต้องการให้แป้นพิมพ์แสดงทั้งข้อความและหมายเลข

การสาธิต


1

ฉันจะลบออกandroid:inputType="textPassword"จากเค้าโครงของคุณ นี่คือสาเหตุที่มันเปลี่ยนกลับเป็นรหัสผ่านเมื่อการวางแนวเปลี่ยนไป เนื่องจากแต่ละครั้งการวางแนวจะเปลี่ยนมุมมองที่ถูกสร้างขึ้นใหม่

สำหรับปัญหาแรกลองสิ่งนี้:

String text = password.getText();
password.setText("");
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
password.setText(text);

โดยทั่วไปการล้างข้อความก่อนที่คุณจะเปลี่ยนประเภทอินพุตแล้วเพิ่มกลับ


ไม่ทำงาน. ฉันพยายามใส่password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);ทันทีหลังจากการเริ่มต้น แต่อนิจจา!
Rajkiran

1

กรอกรหัสเมื่อคุณต้องการใช้การเปิดเผยรหัสผ่านในข้อความแก้ไขรหัสผ่าน

สร้างจุดจับ [drawable ใด ๆ หรือช่องทำเครื่องหมาย]

เมื่อคลิกหรือตรวจสอบ / ไม่เลือกเขียนสิ่งนี้:

 if (edittext.getInputType() == (InputType.TYPE_CLASS_TEXT |
                    InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD )){

                edittext.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_PASSWORD );
            }else{
                edittext.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
            }

อย่าลืมที่จะเขียนบรรทัดนี้:

 edittext.setSelection(edittext.getText().length());

มันตั้งค่าเคอร์เซอร์ไปที่จุดสิ้นสุดของบรรทัด


@PKR ตรวจสอบการติดตั้งใช้งานซึ่งในกรณีนี้พร้อมใช้งาน! :)
sud007

@ sud007 คุณมีความคิดใดบ้างว่าจะเขียนเงื่อนไข if ใน Xamarin / visual Studio ..
sun y

1

ฉันเปลี่ยนประเภทอินพุตในช่องทำเครื่องหมายของฉันดังนั้นOnCheckedChangeListenerฉันจึง:

passwordEdit.setInputType(InputType.TYPE_CLASS_TEXT| (isChecked? InputType.TYPE_TEXT_VARIATION_PASSWORD|~InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD));

และในที่สุดก็ใช้งานได้

TYPE_TEXT_VARIATION_VISIBLE_PASSWORDดูเหมือนว่าปัญหาที่เกิดขึ้นกับบูล กลับค่าสถานะและควรแก้ไขปัญหา

ในกรณีของคุณ:

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|~InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

1

ใช้วิธีการเปลี่ยนแปลง:

เพื่อซ่อน:

editText.transformationMethod = PasswordTransformationMethod.getInstance()

ที่มองเห็นได้:

editText.transformationMethod = SingleLineTransformationMethod.getInstance()

แค่นั้นแหละ.


0

เป็นเพียงความคิดเห็นเพิ่มเติมเกี่ยวกับคำตอบที่ถูกต้องที่ได้รับจาก @Rajkiran คุณอาจต้องการเพิ่ม

etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

ไปที่สถานะอินพุตปกติเพื่อไม่ให้ผู้ใช้รำคาญกับการแนะนำอัตโนมัติของแป้นพิมพ์


0

blockquote

final int [] count = {0};

    showandhide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(count[0] ==0)
            {
                password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                count[0]++;
            }
            else {

                password.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
                showandhide.setText("Hide");
                count[0]--;
            }

        }
    });

0

จากคำตอบของneeraj tและEverton Fernandes Rosarioฉันเขียนใน Kotlin ซึ่งpasswordเป็น id ของ EditText ในเลย์เอาต์ของคุณ

// Show passwords' symbols.
private fun showPassword() {
    password.run {
        val cursorPosition = selectionStart
        transformationMethod = HideReturnsTransformationMethod.getInstance()
        setSelection(cursorPosition)
    }
}

// Show asterisks.
private fun hidePassword() {
    password.run {
        val cursorPosition = selectionStart
        transformationMethod = PasswordTransformationMethod.getInstance()
        setSelection(cursorPosition)
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.