কীভাবে লুকান এবং পাসওয়ার্ড দেখতে স্যুইচ করবেন to


176

কোনও অ্যান্ড্রয়েড এডিটেক্সটটিতে ব্যবহারকারীকে লুকানো এবং পাসওয়ার্ড দেখার মধ্যে স্যুইচ করার কোনও চতুর উপায় আছে কি? পিসি ভিত্তিক বেশ কয়েকটি অ্যাপ্লিকেশন ব্যবহারকারীকে এটি করতে দেয়।

উত্তর:


155

আপনি গতিশীলভাবে একটি পাঠ্য ভিউয়ের বৈশিষ্ট্যগুলি পরিবর্তন করতে পারেন। আপনি যদি এক্সএমএল অ্যাট্রিবিউটকে android:passwordসত্যে সেট করে থাকেন তবে ভিউটি বিন্দু প্রদর্শন করবে যদি আপনি এটি মিথ্যাতে সেট করে থাকেন তবে পাঠ্যটি প্রদর্শিত হবে।

পদ্ধতিটি ট্রান্সফরমেশনমথড দিয়ে আপনার কোড থেকে এই বৈশিষ্ট্যগুলি পরিবর্তন করতে সক্ষম হওয়া উচিত। (অস্বীকৃতি: ভিউটি প্রদর্শিত হওয়ার পরেও যদি পদ্ধতিটি এখনও কাজ করে তবে আমি পরীক্ষা করে দেখিনি that যদি আপনার যদি সমস্যা হয় তবে তা জানার জন্য আমাকে একটি মন্তব্য করুন))

সম্পূর্ণ নমুনা কোড হবে

yourTextView.setTransformationMethod(new PasswordTransformationMethod());

পাসওয়ার্ডটি গোপন করতে। পাসওয়ার্ডটি দেখানোর জন্য আপনি বিদ্যমান রূপান্তর পদ্ধতিগুলির মধ্যে একটি সেট করতে পারেন বা একটি ফাঁকা ট্রান্সফর্মেশনমথড প্রয়োগ করতে পারেন যা ইনপুট পাঠ্যের সাথে কিছুই করে না।

yourTextView.setTransformationMethod(new DoNothingTransformation());

61
পাসওয়ার্ডটি দেখানোর জন্য আপনাকে কোনও নতুন ক্লাস করার দরকার নেই। শুধু কল setTransformationMethod(null)
ম্যাট কুইগলি

4
@ জানুস, নিম্নলিখিত ব্যবহারের ফলে গুদের সমাধান হবে। setTransformationMethod (PasswordTransformationMethod.getInstance ()); এবং সেট ট্রান্সফর্মেশনমথোড (হাইড্রেটার্নস ট্রান্সফর্মেশন মেথড.জেটআইনস্ট্যান্স ());
সুজিথ এস

@ জানুস তবে কীবোর্ডে কীভাবে শো / হাইড কীগুলি পাবেন?
নরেন্দ্র সিং

যখন এডিটেক্সট-এ সেটট্রান্সফর্মেশন মেথডকে কল করার সময় সম্পাদনা পাঠের অনটেক্সট চেঞ্জড কলব্যাক বলা হচ্ছে ... এটি কি সম্ভব হচ্ছে না?
tsiro

1
সঠিক। "সেট ট্রান্সফরমেশনমেথড () মূল কী you আপনার যা যা দরকার তা হ'ল আপনার শ্রোতাদের মধ্যে স্যুইচ করা দরকার: #Password.setTransformationMethod (নাল) / # পাসওয়ার্ড.সেট ট্রান্সফর্মেশনমথোড (নতুন পাসওয়ার্ড ট্রান্সফর্মেশনমেথড ()) default ""
সার্জিও

303

সমর্থন লাইব্রেরি v24.2.0 থেকে এটি অর্জন করা সত্যিই সহজ।

আপনার যা করা দরকার তা হ'ল:

  1. আপনার নির্ভরশীলগুলিতে ডিজাইন গ্রন্থাগার যুক্ত করুন

    dependencies {
         compile "com.android.support:design:24.2.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:layout_marginBottom="@dimen/login_spacing_bottom">
    
        <android.support.design.widget.TextInputEditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/fragment_login_password_hint"
            android:inputType="textPassword"/>
    </android.support.design.widget.TextInputLayout>

passwordToggleEnabledঅ্যাট্রিবিউট কাজ হবে!

  1. আপনার মূল বিন্যাসে যোগ করতে ভুলবেন না xmlns:app="http://schemas.android.com/apk/res-auto"

  2. আপনি আপনার পাসওয়ার্ড টগল ব্যবহার করে কাস্টমাইজ করতে পারেন:

app:passwordToggleDrawable- পাসওয়ার্ড ইনপুট দৃশ্যমানতা টগল আইকন হিসাবে ব্যবহারের জন্য অঙ্কনযোগ্য।
app:passwordToggleTint- পাসওয়ার্ড ইনপুট ভিজিবিলিটি টগল করার জন্য আইকনটি ব্যবহার করুন।
app:passwordToggleTintMode- ব্যাকগ্রাউন্ড টিন্ট প্রয়োগ করতে ব্লেন্ডিং মোড ব্যবহৃত হয়।

টেক্সটইনপুটলয়আউট ডকুমেন্টেশনে আরও বিশদ ।

এখানে চিত্র বর্ণনা লিখুন

AndroidX এর জন্য

  • android.support.design.widget.TextInputLayoutসঙ্গে প্রতিস্থাপনcom.google.android.material.textfield.TextInputLayout

  • android.support.design.widget.TextInputEditTextসঙ্গে প্রতিস্থাপনcom.google.android.material.textfield.TextInputEditText


25.1.0 সংস্করণে আমার একটি অদ্ভুত আচরণ রয়েছে: এটি একবারে পাসওয়ার্ড টগল করে দেখায় তবে আপনি এটি
টিপলে

1
হ্যাঁ, android:textএট্রিবিউট সহ কিছু গণ্ডগোল রয়েছে TextInputEditText। আপনি সর্বদা অ্যান্ড্রয়েডের জন্য গুগল ইস্যু ট্র্যাকার
মিম্বি

1
@ ডেল্টা 7 কিছু উপায় এবং কর্মক্ষেত্র রয়েছে। দয়া করে, এসওতে প্রশ্ন জিজ্ঞাসা করুন, এখানে একটি লিঙ্ক আটকান এবং আমি আপনাকে সাহায্য করার চেষ্টা করব।
মিমিবিএস

1
ধন্যবাদ। তবে, আমার বিল্ডে আপনার স্ক্রিনশট থেকে শো / হাইড গ্রাফিকগুলি অদ্ভুতভাবে বিপরীত হয় - এটি পাসওয়ার্ড লুকিয়ে থাকা অবস্থায় চোখের বাইরে দেখায় - আমি অনুমান করি যে সিদ্ধান্ত নেওয়া বাটনের উচিত ক্রিয়া (বা লক্ষ্য স্থিতি) এর পরিবর্তে বর্তমান অবস্থা প্রদর্শন করা উচিত।
জোশ সটারফিল্ড

1
@ জোসসটারফিল্ড একমত সুতরাং যদি আমরা অ্যাকশন বোতামটি চাই, তবে এটি ম্যানুয়ালি app:passwordToggleDrawable(অবমূল্যায়িত) ব্যবহার করে আমাদের বিপরীত করতে হবে বা app:endIconDrawableতারপরে কাস্টম ড্রয়াবল ব্যবহার করতে হবে যেমন <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_eye_close" android:state_checked="true"/> <item android:drawable="@drawable/ic_eye_open"/> </selector> আমার মনে হয় গুগলের এই আচরণটি ঠিক করা উচিত। ভাল আলোচনা
রহমত ইহসান

112

পাসওয়ার্ডের পরিবর্তে বিন্দুগুলি দেখানোর জন্য পাসওয়ার্ড ট্রান্সফর্মেশনমথড সেট করুন:

yourEditText.setTransformationMethod(new PasswordTransformationMethod());

অবশ্যই আপনি এটির সাথে xML লেআউটে আপনার এডিটেক্সট উপাদানটিতে ডিফল্টরূপে সেট করতে পারেন

android:password

পঠনযোগ্য পাসওয়ার্ডটি আবার দেখাতে কেবল রূপান্তর পদ্ধতি হিসাবে নাল পাস করুন:

yourEditText.setTransformationMethod(null);

7
android:passwordএখন হ্রাস করা হয়েছে, এবং এর android:inputTypeপরিবর্তে আপনার ব্যবহার করা উচিত ।
উইলকা

54
রূপান্তর পদ্ধতিটি সেট করার আগে এবং এর পরে পুনরুদ্ধার করার আগে আপনি কার্সার অবস্থান সংরক্ষণ করে আপনার ব্যবহারকারীদেরও খুশি করতে পারেন। ব্যবহার করুন editText.getSelectionStart()এবং editText.getSelectionEnd()কার্সার অবস্থানে সংরক্ষণ করার জন্য এবং editText.setSelection(start, end)এটি পুনরূদ্ধার জন্য।
মোস্তফা

2
@ উইলকা: অ্যান্ড্রয়েড: ইনপুট টাইপ রান-টাইমে আপনাকে দুটি রাষ্ট্রের মধ্যে পিছনে পিছনে স্যুইচ করতে দেয় না। এটি কেবল একবার আপনাকে স্যুইচ করার অনুমতি দেয় এবং একবার আপনি এটি পরিবর্তন করলে আপনি এটিকে আর পরিবর্তন করতে পারবেন না। এবং না, সেট ট্রান্সফর্মেশনমথডটি হ্রাস করা হয়নি।
অ্যান্ড্রয়েডদেভ

@ ক্লিম্যাক্স তবে কীবোর্ডে কীভাবে শো / হাইড কীগুলি পাবেন?
নরেন্দ্র সিংহ

@DroidWormNarendra আপনি সাধারণত আপনার পাসওয়ার্ড ইনপুট মধ্যে একটি "চোখ চিত্র" একটি ইভেন্ট শ্রোতা সংযুক্ত, অথবা আপনার পাসওয়ার্ড ইনপুট ভিতরে এখানে ব্যাখ্যা মত: stackoverflow.com/questions/3554377/... । তারপরে এই ইভেন্টের শ্রোতাদের আপনি পাসওয়ার্ডটি প্রদর্শন / লুকিয়ে রাখতে পারেন।
এএফআইএকে

82

দেখানো:

editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

আড়াল করতে:

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

এর প্রত্যেকটি কার্সার পুনরায় সেট করার পরে, তাই:

editText.setSelection(editText.length());

অ্যান্ড্রয়েড 4.3 এবং 5.0 এ পরীক্ষিত, দুর্দান্ত কাজ করে! দস্তাবেজগুলি এটিকে 3 থেকে 3 এপিআই পর্যন্ত সমস্তভাবে কাজ করা উচিত বলে মনে করে।
জেমস

@ ম্যাটলোগান তবে কীবোর্ডে কীভাবে শো / হাইড কীগুলি পাবেন?
নরেন্দ্র সিংহ

5
এটি এখানে সবচেয়ে সোজা ফরোয়ার্ড উত্তর। ধন্যবাদ। (অদ্ভুত এটি স্বীকৃত এক নয়)
টিনা

রানটাইম পরিবর্তিত হলে এটি কাজ করে না। লাইনের শেষে না থাকলে এটি ব্যবহারকারীর শেষ কার্সার অবস্থান / নির্বাচনটি পুনরুদ্ধার করবে না।
টম

31

তুমি ব্যবহার করতে পার app:passwordToggleEnabled="true"

এখানে নীচে দেওয়া উদাহরণ

<android.support.design.widget.TextInputLayout
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true"
        android:textColorHint="@color/colorhint"
        android:textColor="@color/colortext">

আজ অবশ্যই উত্তরটি ব্যবহার করতে পছন্দ করা উচিত
রাস্লান বেরোজভ

এটি আমার ক্ষেত্রে দৃশ্যের উচ্চতা বৃদ্ধি করে। টগল আঁকতে সক্ষম থেকে প্যাডিং সরানোর কোনও উপায় আছে কি?
সদ্দা হুসেন

এটি উপাদান উপাদানগুলিতে অবচয় হয়। ব্যবহার app:endIconMode="password_toggle"
নিকোলাস

13

চেকবক্স ব্যবহার করুন এবং সেই অনুযায়ী ইনপুট প্রকারটি পরিবর্তন করুন।

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int start,end;
    Log.i("inside checkbox chnge",""+isChecked);
    if(!isChecked){
        start=passWordEditText.getSelectionStart();
        end=passWordEditText.getSelectionEnd();
        passWordEditText.setTransformationMethod(new PasswordTransformationMethod());;
        passWordEditText.setSelection(start,end);
    }else{
        start=passWordEditText.getSelectionStart();
        end=passWordEditText.getSelectionEnd();
        passWordEditText.setTransformationMethod(null);
        passWordEditText.setSelection(start,end);
    }
}

8
private boolean isPasswordVisible;

private TextInputEditText firstEditText;

...

firstEditText = findViewById(R.id.et_first);

...

    private void togglePassVisability() {
    if (isPasswordVisible) {
        String pass = firstEditText.getText().toString();
        firstEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
        firstEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
        firstEditText.setText(pass);
        firstEditText.setSelection(pass.length());           
    } else {
        String pass = firstEditText.getText().toString();
        firstEditText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
        firstEditText.setInputType(InputType.TYPE_CLASS_TEXT);
        firstEditText.setText(pass);
        firstEditText.setSelection(pass.length());
    }
    isPasswordVisible= !isPasswordVisible;
}

আবার পাঠ্য সেট করার দরকার নেই কেবল প্রথমে কল করুন এডিটটেক্সট ইন্ডিয়ায়ডিট ();
গুণবন্ত প্যাটেল

7

এটি আমার পক্ষে কাজ his এটি আপনাকে অবশ্যই সাহায্য করবে

showpass.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if(!isChecked){

                    // show password
                    password_login.setTransformationMethod(PasswordTransformationMethod.getInstance());

                    Log.i("checker", "true");
                }

                else{
                    Log.i("checker", "false");

                     // hide password
    password_login.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }

            }
        });

5

আমি মনে করি আমি এই প্রশ্নের উত্তর চাই সেখানে কিছু ভাল উত্তরও দিতে চাই,

ডকুমেন্টেশন অনুসারে ট্রান্সফর্মেশনমথড আমাদের মিশনটি করে

TransformationMethod

টেক্সটভিউ ট্রান্সফর্মেশনমিথডস ব্যবহার করে যেমন বিন্দুর সাহায্যে পাসওয়ার্ডের অক্ষরগুলি প্রতিস্থাপন করা বা একক-লাইন পাঠ্য ক্ষেত্রে নতুন লাইনের অক্ষরগুলি লাইন বিরতি সৃষ্টি করা থেকে রক্ষা করে।

লক্ষ্য করুন আমি মাখনের ছুরি ব্যবহার করি, তবে যদি ব্যবহারকারী চেক পাসওয়ার্ড দেখায় তবে এটি একই রকম

@OnCheckedChanged(R.id.showpass)
    public void onChecked(boolean checked){
        if(checked){
            et_password.setTransformationMethod(null);
        }else {
            et_password.setTransformationMethod(new PasswordTransformationMethod());
            
        }
       // cursor reset his position so we need set position to the end of text
        et_password.setSelection(et_password.getText().length());
    }

5

আমি একটি ব্লকে স্ব-অন্তর্ভুক্ত মাত্র কয়েকটি লাইন দিয়ে শোপ্যাসওয়ার্ড / হাইডপ্যাসওয়ার্ড কোড যুক্ত করতে সক্ষম হচ্ছি:

protected void onCreate(Bundle savedInstanceState) {
    ...
    etPassword = (EditText)findViewById(R.id.password);
    etPassword.setTransformationMethod(new PasswordTransformationMethod()); // Hide password initially

    checkBoxShowPwd = (CheckBox)findViewById(R.id.checkBoxShowPwd);
    checkBoxShowPwd.setText(getString(R.string.label_show_password)); // Hide initially, but prompting "Show Password"
    checkBoxShowPwd.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
            if (isChecked) {
                etPassword.setTransformationMethod(null); // Show password when box checked
                checkBoxShowPwd.setText(getString(R.string.label_hide_password)); // Prompting "Hide Password"
            } else {
                etPassword.setTransformationMethod(new PasswordTransformationMethod()); // Hide password when box not checked
                checkBoxShowPwd.setText(getString(R.string.label_show_password)); // Prompting "Show Password"
            }
        }
    } );
    ...

5

আমার একই সমস্যা ছিল এবং এটি কার্যকর করা খুব সহজ।

আপনাকে যা করতে হবে তা হ'ল আপনার সম্পাদনা পাঠ্য ক্ষেত্রটি একটি (com.google.android.matory.textfield.TextInputLayout) এ মোড়ানো এবং সেই অ্যাডটিতে (অ্যাপ: পাসওয়ার্ডটগলইনবলড = "সত্য")।

এটি এডিটেক্সট ক্ষেত্রটিতে চোখ প্রদর্শন করবে এবং আপনি যখন এটিতে ক্লিক করবেন তখন পাসওয়ার্ডটি উপস্থিত হবে এবং আবার ক্লিক করলে অদৃশ্য হয়ে যাবে।

<com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textColorHint="#B9B8B8"
                app:passwordToggleEnabled="true">

                <EditText
                    android:id="@+id/register_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="24dp"
                    android:layout_marginRight="44dp"
                    android:backgroundTint="#BEBEBE"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:padding="16dp"
                    android:textSize="18sp" />
            </com.google.android.material.textfield.TextInputLayout>

4
private int passwordNotVisible=1; 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
 showPassword = (ImageView) findViewById(R.id.show_password);
    showPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText paswword = (EditText) findViewById(R.id.Password);
            if (passwordNotVisible == 1) {
                paswword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                passwordNotVisible = 0;
            } else {

                paswword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                passwordNotVisible = 1;
            }


            paswword.setSelection(paswword.length());

        }
    });
}

4

খুব সাধারণ আকারে:

private fun updatePasswordVisibility(editText: AppCompatEditText) {
        if (editText.transformationMethod is PasswordTransformationMethod) {
            editText.transformationMethod = null
        } else {
            editText.transformationMethod = PasswordTransformationMethod()
        }
        editText.setSelection(editText.length())
    }

আশা করি এটা সাহায্য করবে.


3

আপনি নীচের কোডটি ব্যবহার করে পাসওয়ার্ডটি প্রদর্শন / লুকিয়ে রাখতে পারেন:

এক্সএমএল কোড:

<EditText
        android:id="@+id/etPassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="14dp"
        android:ems="10"
        android:inputType="textPassword" >
        <requestFocus />
    </EditText>
    <CheckBox
        android:id="@+id/cbShowPwd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/etPassword"
        android:layout_below="@+id/etPassword"
        android:text="@string/show_pwd" />

জাভা কোড:

EditText mEtPwd;
CheckBox mCbShowPwd;


mEtPwd = (EditText) findViewById(R.id.etPassword);
mCbShowPwd = (CheckBox) findViewById(R.id.cbShowPwd);

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

3

এটা চেষ্টা কর:

প্রথমে একটি পতাকাটিকে বিশ্বব্যাপী হিসাবে সংজ্ঞায়িত করুন:

private boolean isShowPassword = false;

এবং শোতে এবং পাসওয়ার্ডের পাসওয়ার্ড বোতামে ট্যাপ পরিচালনা করতে শ্রোতাদের সেট করুন:

imgPassword.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isShowPassword) {
                    etPassword.setTransformationMethod(new PasswordTransformationMethod());
                    imgPassword.setImageDrawable(getResources().getDrawable(R.drawable.ic_eye_hide));
                    isShowPassword = false;
                }else{
                    etPassword.setTransformationMethod(null);
                    imgPassword.setImageDrawable(getResources().getDrawable(R.drawable.ic_eye_show));
                    isShowPassword = true;
                }
            }
        });

2

গিথুব এ https://github.com/maksim88/PasswordEditText প্রকল্প চেষ্টা করুন । এমনকি আপনার জাভা কোডটি এটি ব্যবহার করার প্রয়োজন নেই। শুধু পরিবর্তন

লেখা সম্পাদনা

ট্যাগ করুন

com.maksim88.passwordedittext.PasswordEditText

আপনার এক্সএমএল ফাইলে।


এই উপাদানটির সাথে কীভাবে সেটএরর ব্যবহার করবেন আপনার কী ধারণা আছে, একবার ত্রুটিটি পতাকাঙ্কিত হয়ে গেলে শো / লুকান আইকনটি অদৃশ্য হয়ে যায়
guisantogui

2

চেক বাক্সের সাহায্যে পাসওয়ার্ড সম্পাদনা পাঠ্য দেখান এবং লুকান

এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:inputType="textPassword"
        android:id="@+id/edtPass"
        android:textSize="20dp"
        android:hint="password"
        android:padding="20dp"
        android:background="#efeaea"
        android:layout_width="match_parent"
        android:layout_margin="20dp"
        android:layout_height="wrap_content" />

    <CheckBox
        android:background="#ff4"
        android:layout_centerInParent="true"
        android:textSize="25dp"
        android:text="show password"
        android:layout_below="@id/edtPass"
        android:id="@+id/showPassword"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:gravity="top|right"
        android:layout_height="wrap_content" />

</RelativeLayout>

জাভা কোড

package com.example.root.sql2;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.Toolbar;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;

public class password extends AppCompatActivity {


    EditText password;
    CheckBox show_hide_password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hide);
        findViewById();
        show_hide_pass();



    }//end onCreate



    public void show_hide_pass(){
        show_hide_password.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (!b){
                    // hide password
                    password.setTransformationMethod(PasswordTransformationMethod.getInstance());

                }else{
                    // show password
                    password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }
            }
        });
    } // end show_hide_pass




    public void findViewById(){ //  find ids ui and
        password = (EditText) findViewById(R.id.edtPass);
        show_hide_password = (CheckBox) findViewById(R.id.showPassword);
    }//end findViewById



}// end class

2

আপনি সেট ট্রান্সফর্মেশনমেডোড দিয়ে চেষ্টা করেছেন? এটি টেক্সটভিউ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এবং একটি পরামিতি হিসাবে ট্রান্সফর্মেশনমথড চাই।

আপনি এখানে ট্রান্সফর্মেশনমিথডগুলি সম্পর্কে আরও জানতে পারেন ।

এটিতে কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে, যেমন চরিত্র প্রতিস্থাপন।


2
উত্তরের লিঙ্কটি মারা গেছে - "স্থিতি কোড: 404 পাওয়া যায় নি"
পাইং

বিকাশকারী.অ্যান্ড্রয়েড .com/references/android/text/method/… অ্যান্ড্রয়েডের রূপান্তর পদ্ধতি সম্পর্কে তথ্যের জন্য আরও ভাল url হতে পারে।
মিঃ ড্র্রু

1

আমি যা করেছি তা হ'ল

  1. একটি সম্পাদনা পাঠ্য দর্শন এবং একটি সাধারণ পাঠ্য দর্শন তৈরি করুন
  2. সীমাবদ্ধ বিন্যাস (যেমন ফেসবুক অ্যাপ্লিকেশন লগইন স্ক্রিনের মতো) ব্যবহার করে একে অপরের সাথে ওভারল্যাপ করুন
  3. সাধারণ পাঠ্য দৃশ্যে একটি অন্লিকলিস্টনার সংযুক্ত করুন যাতে এটি সম্পাদনা পাঠ্য দর্শনটির ইনপুট ধরণের পরিবর্তন করে (দৃশ্যমান / অ-দৃশ্যমান)

আপনি আরও বিশদ পদক্ষেপ এবং ব্যাখ্যার জন্য এই ভিডিওটি দেখতে পারেন https://youtu.be/md3eVaRzdIM

আশা করি এটা সাহায্য করবে :)


1

এখানে টেক্সটইনপুটএডিটটেক্সট এবং ট্রান্সফর্মেশন পদ্ধতিটি ব্যবহার না করেই আমার সমাধান।

এক্সএমএল

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            style="@style/FormLabel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/username" />

        <EditText
            android:id="@+id/loginUsername"
            style="@style/EditTextStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/ic_person_outline_black_24dp"
            android:drawableStart="@drawable/ic_person_outline_black_24dp"
            android:inputType="textEmailAddress"
            android:textColor="@color/black" />

        <TextView
            style="@style/FormLabel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="@string/password" />

        <EditText
            android:id="@+id/loginPassword"
            style="@style/EditTextStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawableEnd="@drawable/ic_visibility_off_black_24dp"
            android:drawableLeft="@drawable/ic_lock_outline_black_24dp"
            android:drawableRight="@drawable/ic_visibility_off_black_24dp"
            android:drawableStart="@drawable/ic_lock_outline_black_24dp"
            android:inputType="textPassword"
            android:textColor="@color/black" />
    </LinearLayout>

জাভা কোড

boolean VISIBLE_PASSWORD = false;  //declare as global variable befor onCreate() 
loginPassword = (EditText)findViewById(R.id.loginPassword);
loginPassword.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            final int DRAWABLE_LEFT = 0;
            final int DRAWABLE_TOP = 1;
            final int DRAWABLE_RIGHT = 2;
            final int DRAWABLE_BOTTOM = 3;

            if (event.getAction() == MotionEvent.ACTION_UP) {
                if (event.getRawX() >= (loginPassword.getRight() - loginPassword.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                    // your action here
                    //Helper.toast(LoginActivity.this, "Toggle visibility");
                    if (VISIBLE_PASSWORD) {
                        VISIBLE_PASSWORD = false;
                        loginPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                        loginPassword.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_outline_black_24dp, 0, R.drawable.ic_visibility_off_black_24dp, 0);
                    } else {
                        VISIBLE_PASSWORD = true;
                        loginPassword.setInputType(InputType.TYPE_CLASS_TEXT);
                        loginPassword.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_outline_black_24dp, 0, R.drawable.ic_visibility_black_24dp, 0);
                    }
                    return false;
                }
            }
            return false;
        }
    });

1

এই উত্স অনুসারে , আপনি যদি নিজের প্রকল্পটি অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করে থাকেন তবে আপনি প্রতিস্থাপন করতে পারেন

compile "com.android.support:design:24.2.0"

সঙ্গে

implementation "com.google.android.material:material:1.0.0"

তারপরে আপনাকে যা করতে হবে তা হ'ল নীচে কোডটি আপনার লেআউট ফাইলে রেখে দেওয়া:

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:passwordToggleEnabled="true"
    android:hint="@string/hint_text">

  <com.google.android.material.textfield.TextInputEditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

</com.google.android.material.textfield.TextInputLayout>

উপাদান সম্পর্কে আরও তথ্য এখানেTextInputLayout পাওয়া যাবে

এই উত্সটিতে, অ্যান্ড্রয়েড সমর্থন লাইব্রেরি থেকে অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করার পরামর্শ দেওয়া হচ্ছে:

অ্যান্ড্রয়েডএক্স ওপেন-সোর্স প্রকল্প যা অ্যান্ড্রয়েড দল জেটপ্যাকের মধ্যে বিকাশ, পরীক্ষা, প্যাকেজ, সংস্করণ এবং লাইব্রেরি প্রকাশ করতে ব্যবহার করে।

অ্যান্ড্রয়েডএক্স মূল অ্যান্ড্রয়েড সমর্থন লাইব্রেরিতে একটি বড় উন্নতি। সমর্থন লাইব্রেরির মতো, অ্যান্ড্রয়েডএক্স অ্যান্ড্রয়েড ওএস থেকে পৃথকভাবে জাহাজ সরবরাহ করে এবং অ্যান্ড্রয়েড রিলিজ জুড়ে পিছনে-সামঞ্জস্যতা সরবরাহ করে। অ্যান্ড্রয়েডএক্স ফিচার প্যারিটি এবং নতুন লাইব্রেরি সরবরাহ করে সমর্থন লাইব্রেরির পুরোপুরি প্রতিস্থাপন করে। এছাড়াও অ্যান্ড্রয়েডএক্সে নিম্নলিখিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:

অ্যান্ড্রয়েডএক্সের সমস্ত প্যাকেজ অ্যান্ড্রয়েডএক্স স্ট্রিং দিয়ে শুরু করে একটি সামঞ্জস্যপূর্ণ নেমস্পেসে বাস করে। সমর্থন লাইব্রেরি প্যাকেজগুলি সংশ্লিষ্ট অ্যান্ড্রয়েডেক্স * প্যাকেজগুলিতে ম্যাপ করা হয়েছে। সমস্ত পুরানো শ্রেণীর পুরো ম্যাপিং এবং নতুনগুলিতে শিল্পকর্ম তৈরি করার জন্য, প্যাকেজ রিফ্যাক্টরিং পৃষ্ঠাটি দেখুন।

সমর্থন লাইব্রেরি থেকে ভিন্ন, অ্যান্ড্রয়েডএক্স প্যাকেজগুলি পৃথকভাবে রক্ষণাবেক্ষণ এবং আপডেট করা হয়। অ্যান্ড্রয়েডপ প্যাকেজগুলি 1.0.0.0 সংস্করণ দিয়ে শুরু করে কঠোর সিমান্টিক সংস্করণ ব্যবহার করে। আপনি আপনার প্রকল্পে অ্যান্ড্রয়েডএক্স লাইব্রেরিগুলি স্বাধীনভাবে আপডেট করতে পারেন।

সমস্ত নতুন সাপোর্ট লাইব্রেরি বিকাশ অ্যান্ড্রয়েডএক্স লাইব্রেরিতে ঘটবে। এর মধ্যে মূল সমর্থন লাইব্রেরি শিল্পকলাগুলির রক্ষণাবেক্ষণ এবং নতুন জেটপ্যাক উপাদানগুলির অন্তর্ভুক্ত রয়েছে।


1

প্রথমে এটি একটি চিত্র ভেক্টর সম্পদ দৃশ্যমানতায় লোড হওয়া পর্দা এখানে চিত্র বর্ণনা লিখুন

ক্লিক করার পরে এটি এই চিত্রটির দৃশ্যমানতা বন্ধ হয়ে যাবে এখানে চিত্র বর্ণনা লিখুন

উপরের পাসওয়ার্ড সুইচ জন্য কোড (এক্সএমএল কোড)

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/laypass"
    android:layout_width="330dp"
    android:layout_height="50dp"
    android:layout_marginTop="24dp"
    app:layout_constraintEnd_toEndOf="@+id/editText3"
    app:layout_constraintStart_toStartOf="@+id/editText3"
    app:layout_constraintTop_toBottomOf="@+id/editText3">

    <EditText
        android:id="@+id/edit_password"
        style="@style/EditTextTheme"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/round"
        android:drawableLeft="@drawable/ic_password"
        android:drawablePadding="10dp"
        android:ems="10"
        android:hint="Password"
        android:inputType="textPassword"
        android:paddingLeft="10dp"
        android:paddingRight="15dp"
        android:textColor="@color/cyan92a6"
        android:textColorHint="@color/cyan92a6"
        android:textCursorDrawable="@null"
        android:textSize="18sp"
        />

    <ImageView
        android:id="@+id/show_pass_btn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="8dp"
        android:alpha=".5"
        android:onClick="ShowHidePass"
        android:padding="5dp"
        android:src="@drawable/ic_visibility"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/laypass"
        app:layout_constraintTop_toTopOf="@+id/edit_password" /> 
 </androidx.constraintlayout.widget.ConstraintLayout>

বোতাম অপারেশনের জন্য জাভা কোড

public void ShowHidePass(View view) {

    if(view.getId()==R.id.show_pass_btn){
        if(edit_password.getTransformationMethod().equals(PasswordTransformationMethod.getInstance())){
            ((ImageView)(view)).setImageResource(R.drawable.ic_visibility_off);
            //Show Password
            edit_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
        }
        else{
            ((ImageView)(view)).setImageResource(R.drawable.ic_visibility);
            //Hide Password
            edit_password.setTransformationMethod(PasswordTransformationMethod.getInstance());
        }
    }
}

0

এক্সএমএলে এটি করুন

    <LinearLayout
          android:layout_height="wrap_content"
          android:layout_width="fill_parent"
          android:orientation="vertical"
          >
          <RelativeLayout
              android:id="@+id/REFReLayTellFriend"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal"
              >
          <EditText
              android:id="@+id/etpass1"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:background="@android:color/transparent"
              android:bottomLeftRadius="10dp"
              android:bottomRightRadius="50dp"
              android:fontFamily="@font/frutiger"
              android:gravity="start"
              android:inputType="textPassword"
              android:hint="@string/regpass_pass1"
              android:padding="20dp"
              android:paddingBottom="10dp"
              android:textColor="#000000"
              android:textColorHint="#d3d3d3"
              android:textSize="14sp"
              android:topLeftRadius="10dp"
              android:topRightRadius="10dp"/>
              <ImageButton
                  android:id="@+id/imgshowhide1"
                  android:layout_width="40dp"
                  android:layout_height="20dp"
                  android:layout_marginTop="20dp"
                  android:layout_marginRight="10dp"
                  android:background="@drawable/showpass"
                  android:layout_alignRight="@+id/etpass1"/>
          </RelativeLayout>    

 boolean show=true;
 //on image click inside password do this
 if(show){
                imgshowhide2.setBackgroundResource(0);
                imgshowhide2.setBackgroundResource(R.drawable.hide);
                etpass2.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                etpass2.setSelection(etpass2.getText().length());

                show=false;
            }else{
                imgshowhide2.setBackgroundResource(0);
                imgshowhide2.setBackgroundResource(R.drawable.showpass);
                //etpass1.setInputType(InputType.TYPE_TEXT);
                etpass2.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
                etpass2.setSelection(etpass2.getText().length());
                show=true;
            }

0

আমার কোটলিন এক্সটেনশন। একবার সর্বত্র ব্যবহার লিখুন

fun EditText.tooglePassWord() {
this.tag = !((this.tag ?: false) as Boolean)
this.inputType = if (this.tag as Boolean)
    InputType.TYPE_TEXT_VARIATION_PASSWORD
else
    (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD)

this.setSelection(this.length()) }

আপনি এই পদ্ধতিটি যে কোনও ফাইলে রাখতে পারেন এবং যেকোন জায়গায় এটি ব্যবহার করুন it

ivShowPassword.click { etPassword.tooglePassWord() }

যেখানে ivShowPassword ক্লিক করা হয় চিত্রের ভিউ (আই) এবং etPassword হয় এডিটেক্সট


0

একটি ভাল সমাধান। একটি বোতাম সেট আপ করুন, তারপরে এই কোডটি ব্যবহার করুন:

public void showPassword(View v)
{

    TextView showHideBtnText = (TextView) findViewById(R.id.textView1);

    if(showHideBtnText.getText().toString().equals("Show Password")){
        password.setTransformationMethod(null);
        showHideBtnText.setText("Hide");
    } else{
        password.setTransformationMethod(new PasswordTransformationMethod());
        showHideBtnText.setText("Show Password");
    }


}

0

এই পদ্ধতিটি যুক্ত করুন:

fun EditText.revertTransformation() {
    transformationMethod = when(transformationMethod) {
        is PasswordTransformationMethod -> SingleLineTransformationMethod.getInstance()
        else -> PasswordTransformationMethod.getInstance()
    }
}

এটি কল করুন ইনপুট ধরণের অবস্থার মধ্যে স্যুইচ হবে (আপনি নিজের পছন্দটিতে সিঙ্গল-লাইন রূপান্তর পরিবর্তন করতে পারেন)। ব্যবহারের উদাহরণ:

editText.revertTransformation()

0
1> Make a selector file "show_password_selector.xml".

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/pwd_hide"
        android:state_selected="true"/>
    <item android:drawable="@drawable/pwd_show"
        android:state_selected="false" />
</selector>

2>set "show_password_selector" file into imageview.

<ImageView
                        android:id="@+id/iv_pwd"
                        android:layout_width="@dimen/_35sdp"
                        android:layout_height="@dimen/_25sdp"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:layout_marginRight="@dimen/_15sdp"
                        android:src="@drawable/show_password_selector" />

3> put below code in java file.
  iv_new_pwd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (iv_new_pwd.isSelected()) {
                iv_new_pwd.setSelected(false);
                Log.d("mytag", "in case 1");
                edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT);
            } else {
                Log.d("mytag", "in case 1");
                iv_new_pwd.setSelected(true);
                edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }
        }
    });

0
1> Make a selector file "show_password_selector.xml".

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/pwd_hide"
        android:state_selected="true"/>
    <item android:drawable="@drawable/pwd_show"
        android:state_selected="false" />
</selector>

2>set "show_password_selector" file into imageview.

<ImageView
                        android:id="@+id/iv_pwd"
                        android:layout_width="@dimen/_35sdp"
                        android:layout_height="@dimen/_25sdp"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:layout_marginRight="@dimen/_15sdp"
                        android:src="@drawable/show_password_selector" />

3> put below code in java file.
  iv_new_pwd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (iv_new_pwd.isSelected()) {
                iv_new_pwd.setSelected(false);
                Log.d("mytag", "in case 1");
                edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT);
            } else {
                Log.d("mytag", "in case 1");
                iv_new_pwd.setSelected(true);
                edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }
        }
    });

-2
if (inputPassword.getTransformationMethod() == PasswordTransformationMethod.getInstance()) {
 //password is visible
                inputPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
            }
else if(inputPassword.getTransformationMethod() == HideReturnsTransformationMethod.getInstance()) {
 //password is hidden
                inputPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
            }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.