কোনও সম্পাদনা পাঠ্যক্রমের জন্য ইনপুটটাইপ সেট করুন?


216

আমরা কিভাবে সম্পাদনা পাঠ্যক্রমের জন্য ইনপুট প্রকারটি সেট করব? আমি চেষ্টা করছি:

mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

এটির কোনও প্রভাব আছে বলে মনে হয় না।

উত্তর:


213

টেক্সটভিউ ডক্স অনুসারে, অ্যান্ড্রয়েডের প্রোগ্রামেটিক সংস্করণ: পাসওয়ার্ড সেট ট্রান্সফরমেশনমেথড () , সেটইনপুট টাইপ () নয়। সুতরাং যেমন কিছু:

mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());

কৌতুক করা উচিত।


4
কেবল এটি যুক্ত করতে, আপনাকে সেট ইনপুট টাইপের পরিবর্তে সেট ট্রান্সফর্মেশনমথড কল করতে হবে । সেট ট্রান্সফর্মেশনমথডের পরে সেটপুট টাইপ কল করার ফলে সম্পাদনা পাঠ আবার পাসওয়ার্ড মোডে না আসার কারণ হয়।
পল রাইল্যান্ড

11
এই উত্তরটি জিজ্ঞাসা করার জন্য ভুল। এটি কেবলমাত্র প্রবেশ করা পাঠ্যকে EditText(পাসওয়ার্ড বিন্দুর সাথে অক্ষর প্রতিস্থাপন করে) রূপান্তর করে । যা EditTextনিজেই প্রবেশ করার অনুমতি দেয় তার উপর এর কোনও প্রভাব নেই ।
slinden77

4
সেট ইনপুট টাইপ শেষ পর্যন্ত সেট ট্রান্সফর্মেশনমথোডকে মধ্য থেকে কল করে, তাই যদি আপনি সেটওয়ালটাইপটিতে TYPE_TEXT_VARIATION_PASSWORD পাস করেন তবে এটি আপনার জন্য এটি করবে। সেটইনপুট টাইপ করার পরে সেটসিংলাইন কল করার পরে সমস্যাটি লেগেছে বলে মনে হচ্ছে যা সেটট্রান্সফর্মেশন মেথডকে নাল দিয়ে কল করবে বা একক লাইন ট্রান্সফর্মার এভাবে পাসওয়ার্ড ট্রান্সফর্মার সাফ করে দেবে।
স্পার্কিম 3

কল সেট ট্রান্সফরমেশনমথড (পাসওয়ার্ড ট্রান্সফর্মেশন মেথড.জেট ইনসট্যান্স ()) এর পরে আমি এডিট করতে পারছি না
সুজিথ এর

তবে ক্ষেত্রটি ব্যবহারের সময় পাসওয়ার্ডটি প্রস্তাবিত পাঠ্যে প্রদর্শিত হবে
গ্যারি ডেভিস

408

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

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

2
আপনার টিপ আমার জন্য নিখুঁতভাবে কাজ করেছে! প্রোগ্রামিয়ালি ইনপুট টাইপটিকে মাল্টলাইনে সেট করার ক্ষেত্রে আমার একই সমস্যা ছিল।
আন্না ল্যাম

এখানে খানিকটা বা অপারেটর থাকার তাৎপর্য কী? দুঃখিত, আমি অ্যান্ড্রয়েডে নতুন।
সঞ্জীব

আমি ইনপুটটাইপের সাথে একমত নই T না!
লুইস ফেলিসার্ট

38

এখানে স্ট্যান্ডার্ড কীবোর্ডে প্রদর্শিত বিভিন্ন ইনপুট ধরণ রয়েছে।

ইনপুট ধরণের ডেমো

প্রোগ্রামগতভাবে ইনপুট টাইপ সেট করা হচ্ছে

editText.setInputType(InputType.TYPE_CLASS_TEXT);

ডকুমেন্টেশন ছাড়াও অন্যান্য বিকল্পগুলি TYPE_CLASS_TEXTপাওয়া যাবে ।

এক্সএমএলে ইনপুট টাইপ সেট করা হচ্ছে

<EditText
    android:inputType="text"
/>

ডকুমেন্টেশন ছাড়াও অন্যান্য বিকল্পগুলি textপাওয়া যাবে ।

পরিপূরক কোড

উপরের চিত্রটির জন্য কোড এখানে।

public class MainActivity extends AppCompatActivity {

    EditText editText;
    TextView textView;
    List<InputTypeItem> inputTypes;
    int counter = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
        textView = findViewById(R.id.textView);
        initArray();
    }

    public void onChangeInputTypeButtonClick(View view) {
        if (counter >= inputTypes.size()) {
            startOver();
            return;
        }
        textView.setText(inputTypes.get(counter).name);
        editText.setInputType(inputTypes.get(counter).value);
        editText.setSelection(editText.getText().length());
        counter++;
    }

    private void startOver() {
        counter = 0;
        textView.setText("");
        editText.setInputType(InputType.TYPE_CLASS_TEXT);
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }


    private void initArray() {
        inputTypes = new ArrayList<>();
        inputTypes.add(new InputTypeItem("date",  InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE));
        inputTypes.add(new InputTypeItem("datetime", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL));
        inputTypes.add(new InputTypeItem("none", InputType.TYPE_NULL));
        inputTypes.add(new InputTypeItem("number",  InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL));
        inputTypes.add(new InputTypeItem("numberDecimal",  InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
        inputTypes.add(new InputTypeItem("numberPassword",  InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
        inputTypes.add(new InputTypeItem("numberSigned", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED));
        inputTypes.add(new InputTypeItem("phone",  InputType.TYPE_CLASS_PHONE));
        inputTypes.add(new InputTypeItem("text",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL));
        inputTypes.add(new InputTypeItem("textAutoComplete", InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE));
        inputTypes.add(new InputTypeItem("textAutoCorrect",  InputType.TYPE_TEXT_FLAG_AUTO_CORRECT));
        inputTypes.add(new InputTypeItem("textCapCharacters",  InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS));
        inputTypes.add(new InputTypeItem("textCapSentences",  InputType.TYPE_TEXT_FLAG_CAP_SENTENCES));
        inputTypes.add(new InputTypeItem("textCapWords",  InputType.TYPE_TEXT_FLAG_CAP_WORDS));
        inputTypes.add(new InputTypeItem("textEmailAddress",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS));
        inputTypes.add(new InputTypeItem("textEmailSubject", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT));
        inputTypes.add(new InputTypeItem("textFilter",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER));
        inputTypes.add(new InputTypeItem("textLongMessage",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE));
        inputTypes.add(new InputTypeItem("textMultiLine",  InputType.TYPE_TEXT_FLAG_MULTI_LINE));
        inputTypes.add(new InputTypeItem("textNoSuggestions", InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS));
        inputTypes.add(new InputTypeItem("textPassword",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD));
        inputTypes.add(new InputTypeItem("textPersonName", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME));
        inputTypes.add(new InputTypeItem("textPhonetic",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC));
        inputTypes.add(new InputTypeItem("textPostalAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS));
        inputTypes.add(new InputTypeItem("textShortMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
        inputTypes.add(new InputTypeItem("textUri",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI));
        inputTypes.add(new InputTypeItem("textVisiblePassword",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD));
        inputTypes.add(new InputTypeItem("textWebEditText",  InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT));
        inputTypes.add(new InputTypeItem("textWebEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS));
        inputTypes.add(new InputTypeItem("textWebPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD));
        inputTypes.add(new InputTypeItem("time", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME));
    }

    class InputTypeItem {
        private String name;
        private int value;
        InputTypeItem(String name, int value) {
            this.name = name;
            this.value = value;
        }
    }
}

আরো দেখুন


29

আমি সব দিয়ে সমাধান করেছি

.setInputType(InputType.TYPE_CLASS_NUMBER);

পরিষ্কার তথ্য এবং জন্য দেখুন

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

বিন্দুগুলি দেখতে (যদি ডেটা সংখ্যা হয় তবে এটি অন্য শ্রেণীর পছন্দ নয়)


এটি কাজ করেছে, ধন্যবাদ! একটি প্রশ্ন, সরল পাঠ্য থেকে পাসওয়ার্ডের ধরণে পরিবর্তনের সময় কেন আমাকে 'বা' যুক্ত করতে হবে? কেন আমি কেবল এটি করতে পারি না: .setInputType (ইনপুট টাইপ। TYPE_NUMBER_VARIATION_PASSWORD) ;? আমি চেষ্টা করেছি এবং এটি কার্যকর হয়নি।
অজানা ব্যবহারকারী

15

শুধুমাত্র সংখ্যার অনুমতি দেওয়ার জন্য:

password1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER);

পাসওয়ার্ডটি রূপান্তর (গোপন) করতে:

password1.setTransformationMethod(PasswordTransformationMethod.getInstance());

7
editText.setInputType(EditorInfo.TYPE_CLASS_NUMBER);

// আপনি আপনার প্রয়োজন অনুযায়ী টাইপ _... পরিবর্তন করতে পারেন।


5

কোটলিনের জন্য:

    val password = EditText(this)
    password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
    password.hint = "Password"

4

এটি আমার মতো অন্যদের জন্য সহায়ক হতে পারে যারা পাসওয়ার্ড এবং ফ্রি-টেক্সট মোডের মধ্যে টগল করতে চেয়েছিল। আমি প্রস্তাবিত ইনপুট পদ্ধতিগুলি ব্যবহার করার চেষ্টা করেছি তবে এটি কেবল এক দিকেই কাজ করেছিল। আমি পাসওয়ার্ড থেকে পাঠ্যে যেতে পারি তবে আমি আর ফিরে যেতে পারিনি। যারা টগল হ্যান্ডেল করার চেষ্টা করছেন (যেমন একটি পাসওয়ার্ড চেক বাক্স দেখান) ব্যবহার করুন

       @Override
        public void onClick(View v)
        {
            if(check.isChecked())
            {
                edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                Log.i(TAG, "Show password");
            }
            else
            {
                edit.setTransformationMethod(PasswordTransformationMethod.getInstance());
                Log.i(TAG, "Hide password");
            }
        }

আমি ক্রেডিট আছে এই সমাধান জন্য। ইচ্ছে করে আমি কয়েক ঘন্টা আগে খুঁজে পেয়েছি!


1

পাসওয়ার্ড প্রদর্শন না করা:

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

আবার পাসওয়ার্ড আড়াল করতে:

editText.setTransformationMethod(PasswordTransformationMethod.getInstance());

0

এটি আপনার লেআউটে সম্পাদনা পাঠ / পাঠ্য ভিউ ট্যাগে যুক্ত করার চেষ্টা করুন

android:password="true"

সম্পাদনা: আমি কেবল আপনার পোস্টটি আবার পড়েছি, সম্ভবত আপনি নির্মাণের পরে এটি করা দরকার। আপনার স্নিপেট কেন কাজ করবে না তা আমি দেখতে পাচ্ছি না।


আমার এক্ষেত্রে একটি বিন্যাস ফাইল নেই, ক্ষেত্রগুলি ক্রমবর্ধমানভাবে উত্পন্ন হচ্ছে।
ব্যবহারকারী 246114

হ্যাঁ এটি নির্মাণের পরেও করা হচ্ছে, এটি কেন কাজ করছে না তা নিশ্চিত নয়!
ব্যবহারকারী 246114

6
এই বিকল্পটি এখন হ্রাস করা হয়েছে !!
সুইফটবয়

এই জিনিসটি কেবলমাত্র একটি যা পুরানো অ্যান্ড্রয়েড ২.৩ এর জন্য কাজ করে, আমি উত্তরটি অগ্রাহ্য করেছি।
djdance

0

আমি জানি প্রত্যাশিত উত্তরটি রয়েছে Java। তবে এখানে আমার 2 সেন্ট পরামর্শটি সর্বদা সম্পর্কিত XML(ন্যূনতম বেসিক স্টাফগুলি) সম্পর্কিত জিনিসগুলি হ্যান্ডেল করার চেষ্টা করুন যাতে আমি xmlএই ব্যবহারের ক্ষেত্রে পরিচালনা করার পরিবর্তে কোনও বৈশিষ্ট্য ব্যবহার করার পরামর্শ দেব wouldjava

    <EditText
     android:inputType="textPassword"/>

2
কিছু ক্ষেত্রে আপনি বিভিন্ন ইনপুট প্রকারের মধ্যে টগল করতে চাইতে পারেন যেমন কোনও ক্ষেত্রের মধ্যে প্রবেশ করা পাসওয়ার্ড লুকানো / দেখানো; যা আমাকে এই পৃষ্ঠায় যেতে দেয়
উইলিয়াম

1
তবে তার জন্য এডিটেক্সট-এ একটি বিকল্প রয়েছে যা আপনাকে নিজের পাসওয়ার্ডটি পাসওয়ার্ড প্রদর্শন / আড়াল করার দরকার নেই এটি এটির জন্য একটি দুর্দান্ত অ্যানিমেশন দেয়।
প্রথম কেসকর

তথ্যের জন্য ধন্যবাদ, আমি এটি এখানে দেখেছি stackoverflow.com/a/41163578/3310235
উইলিয়াম

0

লুকান:

edtPassword.setInputType(InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(null);

দেখান:

edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);                    
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());

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

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


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.