android - প্রোগ্রামডিকভাবে পাসওয়ার্ড থেকে Normal এবং vice versa এ EditText এর ইনপুট প্রকার পরিবর্তন করুন




passwords android-edittext (14)

আমার অ্যাপ্লিকেশনটিতে, আমার একটি সম্পাদনা EditText যার ডিফল্ট ইনপুট প্রকারটি android:inputType="textPassword" সেট করা আছে android:inputType="textPassword" ডিল্ট দ্বারা। এটির ডানদিকের একটি CheckBox রয়েছে, যা যখন চেক করা হয়, তখন CheckBox প্ল্যানেট টেক্সট এডিটটেক্সটের ইনপুট টাইপটি পরিবর্তন করে। যে জন্য কোড

password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

আমার সমস্যা হল, যখন চেকবক্সটি অচিহ্নিত হয় তখন এটি আবার ইনপুট টাইপ PASSWORD এ সেট করা উচিত। আমি এটা ব্যবহার করে করেছি

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

কিন্তু, যে edittext ভিতরে টেক্সট এখনও দৃশ্যমান। এবং অবাক হওয়ার জন্য, যখন আমি বিবর্তন পরিবর্তন করি, এটি স্বয়ংক্রিয়ভাবে ইনপুট টাইপ পাসওয়ার্ডে সেট করে এবং ভিতরে লেখাটি বুলেটযুক্ত (একটি পাসওয়ার্ডের মত দেখানো হয়)।

এই অর্জন কোন উপায়?


ব্লককোট

চূড়ান্ত int [] গণনা = {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]--;
            }

        }
    });

ঠিক আছে তাই চেষ্টা করার ঘন্টা পরে অবশেষে এটি বাস্তবায়িত। নীচে কোড ..

  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 ইভেন্ট পরে। যদি এটি দেখানো হয় তবে ইনপুট টাইপ পরিবর্তন করা, কার্সার অবস্থানটি সামঞ্জস্য করা এবং নতুন পাঠ্যটিকে লুকানো হিসাবে সেট করা।

যখন এটি গোপন থাকে ... বিপরীত হচ্ছে অর্থাত পাসওয়ার্ড গোপন করা, কার্সারটি সামঞ্জস্য করা এবং পাঠ্যটিকে শো হিসাবে সেট করা। এবং এটাই. এটা একটি কবজ মত কাজ করছে।


আপনি পাসওয়ার্ড সম্পাদনা টেক্সট পাসওয়ার্ড দৃশ্যমানতা প্রয়োগ করতে চান যখন সম্পূর্ণ কোড।

একটি হ্যান্ডেল তৈরি করুন [যেকোনো আঁকা বা চেকবাক্স]

ক্লিক বা চেক করা / চেক অন এখনি লিখুন:

 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());

এটি লাইন শেষে কার্সার রিসেট করে।


আমি android:inputType="textPassword" মুছে android:inputType="textPassword" আপনার লেআউট থেকে android:inputType="textPassword" । যেহেতু অভিযোজন পরিবর্তনের সময় এটি পাসওয়ার্ডে ফিরে আসছে। প্রতিটি সময় অভিযোজন পরিবর্তন কারণ পুনঃনির্ধারণ করা হচ্ছে।

প্রথম সমস্যা হিসাবে এটি চেষ্টা করুন:

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

আপনি ইনপুট টাইপ পরিবর্তন করার আগে মূলত টেক্সট খালি এবং তারপর এটি ফিরে যোগ করুন।


এই কোডটি পাসওয়ার্ড এবং পাঠ্যাংশ পরিবর্তন করতে ব্যবহার করুন

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


এই কোডটি পাসওয়ার্ড এবং পাঠ্যাংশ পরিবর্তন করতে ব্যবহার করুন। এই কোড পুরোপুরি আমার জন্য কাজ। এটা চেষ্টা কর..

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);
    }

}
});

এটা আমার জন্য কাজ করেছে:

mytext.setInputType(InputType.TYPE_CLASS_NUMBER);

কম কোড সহ দৃশ্যমানতা টগল করতে ImageView ব্যবহার করে আরেকটি সহজ উদাহরণ, একক ইনপুট টাইপ অ্যাসাইনমেন্টের কারণে আমাদের কেবলমাত্র সমতা অপারেটর প্রয়োজন:

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

একই ফলাফল কিন্তু সংক্ষিপ্ত শব্দ দিতে হবে।


কোটলিন ব্যবহারকারীদের জন্য:

password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD

পাসওয়ার্ড / পাসওয়ার্ড লুকাতে ইমেজ / বোতামটির জন্য এটি সম্পূর্ণ অনুলিপি হ্যান্ডলার।

    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);
        }
    };

ভিজ্যুয়াল স্টুডিও / জ্যামারিনের জন্য একই রকম সমাধান খোঁজার জন্য আমার এই থ্রেডে আমাকে নেতৃত্ব দিন। নিচে জামারিনের সাথে আমার জন্য কি কাজ করেছে। মনে রাখবেন যে মোডগুলির মধ্যে স্যুইচ করার সময় এই বাস্তবায়নটি 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.TextVariationVisiblePassword | Android.Text.InputTypes.TextFlagNoSuggestions;

অক্ষরগুলি লুকাতে: et.InputType = Android.Text.InputTypes.TextVariationPassword | Android.Text.InputTypes.ClassText; et.InputType = Android.Text.InputTypes.TextVariationPassword | Android.Text.InputTypes.ClassText;

অবস্থান নির্ধারণ করতে: int position = et.Text.Length; et.SetSelection(position, position);


শুধু একই সমস্যা হচ্ছে যারা মানুষের জন্য। শুধু প্রোগ্রাম্যাটিক্যাল এডিট্যাটকে অতিরিক্ত বৈশিষ্ট্য যোগ করুন এবং আপনি সম্পন্ন হন।

password.setInputType(InputType.TYPE_CLASS_TEXT |
    InputType.TYPE_TEXT_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 }'

কোটলিন ব্যবহার করে,

password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD

নিরজ টি এবং এভারটন ফার্নান্দেজ রোজারিওর উত্তরগুলির উপর ভিত্তি করে আমি কোটলিনে লিখেছি, যেখানে password আপনার বিন্যাসে একটি 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)
    }
}