android - EditText এর জন্য প্রথম অক্ষর ক্যাপিটালাইজেশন




android-edittext (8)

আমি একটু ব্যক্তিগত todo তালিকা অ্যাপ্লিকেশন কাজ করছি এবং এতদূর সবকিছু বেশ ভাল কাজ করা হয়েছে। আমি একটু চিন্তা করতে চাই এক ছোট্ট কুইক। যখনই আমি একটি নতুন আইটেম যুক্ত করতে যাই, আমার ভিতরে একটি সম্পাদনাটেক্সট ভিউ সহ একটি ডায়ালগ থাকে। যখন আমি EditText ভিউটি নির্বাচন করি, কীবোর্ডটি পাঠ্য প্রবেশ করতে আসে, যেমনটি করা উচিত। বেশিরভাগ অ্যাপ্লিকেশনগুলিতে, ডিফল্ট মনে হয় যে শিফট কী প্রথম অক্ষরের জন্য অনুষ্ঠিত হয় ... যদিও এটি আমার দৃশ্যের জন্য এটি না করে। ঠিক করার জন্য একটি সহজ উপায় হতে হবে, তবে আমি বারবার রেফারেন্স অনুসন্ধান করেছি এবং এটি খুঁজে পাচ্ছি না। আমি অ্যাডাপ্টারের দ্বারা লোড হওয়া রেফারেন্সের জন্য একটি XML এক্সট্রিবিউটে থাকা আছে বলে মনে করছি, কিন্তু আমি এটি কি তা খুঁজে পাচ্ছি না।


XML এ ইনপুট টাইপ এবং JAVA ফাইলে ফাইলটি সেট করুন,

XML এ,

অ্যান্ড্রয়েড ইনপুট = "textMultiLine | textCapSentences"

এটি multiline এবং JAVA ফাইলের অনুমতি দেবে,

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

আপনার কীবোর্ডের অটো-ক্যাপিটালাইজেশান সেটিং সক্ষম করা নিশ্চিত করুন।


আমি আপনাকে উভয় উত্তর প্রথম অক্ষর রাজধানী করা হবে এবং আশ্বস্ত একক লাইন করা হবে না আশ্বস্ত করতে পারেন।

আপনি যদি XML এ এটি করতে চান তবে কোডটি

android:inputType="textCapWords|textCapSentences"

যদি এটি কার্যকলাপ / ফাটান ইত্যাদি নীচের কাজ করতে চান কোড

momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)

PS: যদি অন্য কোনও সম্পত্তি না থাকে তবে আপনি সহজেই এটি একটি পাইপ দিয়ে যুক্ত করতে পারেন "|" প্রতীক, শুধু বৈশিষ্ট্য বৈশিষ্ট্য মধ্যে এক্সএমএল কোন স্থান নেই তা নিশ্চিত করুন


আমি প্রতিষ্ঠিত এবং আমার সমাধান: জাভাতে এটি সমাধান করার 2 টি উপায় রয়েছে:

 testEditText.setInputType(InputType.TYPE_CLASS_TEXT 
 | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

এবং এক্সএমএল:

 <EditText
android:id="@+id/mytxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:textSize="12sp" />

এই কোডটি চেষ্টা করে দেখুন, এটি সমস্ত শব্দগুলির প্রথম চরিত্রকে পুঁজি করবে।

- EditText ভিউ জন্য addTextChangedListener সেট করুন

edt_text.addTextChangedListener (প্রহরী);

- TextWatcher যোগ করুন

TextWatcher watcher = new TextWatcher() {
    int mStart = 0;

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        mStart = start + count;
    }

    @Override
    public void afterTextChanged(Editable s) {
        String input = s.toString();
        String capitalizedText;
        if (input.length() < 1)
            capitalizedText = input;
        else if (input.length() > 1 && input.contains(" ")) {
            String fstr = input.substring(0, input.lastIndexOf(" ") + 1);
            if (fstr.length() == input.length()) {
                capitalizedText = fstr;
            } else {
                String sstr = input.substring(input.lastIndexOf(" ") + 1);
                sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1);
                capitalizedText = fstr + sstr;
            }
        } else
            capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);

        if (!capitalizedText.equals(edt_text.getText().toString())) {
            edt_text.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {

                }

                @Override
                public void afterTextChanged(Editable s) {
                    edt_text.setSelection(mStart);
                    edt_text.removeTextChangedListener(this);
                }
            });
            edt_text.setText(capitalizedText);
        }
    }
};

এর আগে এটি android:capitalize="words" হতে ব্যবহৃত হয়েছিল android:capitalize="words" , যা এখন অব্যবহৃত। প্রস্তাবিত বিকল্পটি android:inputType="textCapWords" ব্যবহার করা হল android:inputType="textCapWords"

দয়া করে মনে রাখবেন যে এটি কেবল তখনই কাজ করবে যদি আপনার ডিভাইস কীবোর্ড অটো ক্যাপিটালাইজ সেটিং সক্ষম করা থাকে।

এই প্রোগ্রামটি করার জন্য, নিম্নলিখিত পদ্ধতি ব্যবহার করুন:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);


শুধু android:inputType="textCapWords" ব্যবহার করুন android:inputType="textCapWords"

উদাহরণ স্বরূপ:

<EditText
    android:id="@+id/txtName"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_weight="0.7"
    android:inputType="textCapWords"
    android:textColorHint="#aaa"
    android:hint="Name Surname"
    android:textSize="12sp" />

রেফারেন্সের জন্য নিচের লিঙ্কে পড়ুন: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType


এই কোডটি শুধুমাত্র EditText এর জন্য প্রথম অক্ষর ক্যাপিটালাইজেশন ব্যবহার করুন

MainActivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:tag="true">
    </EditText>

</RelativeLayout>

MainActivity.java

EditText et = findViewById(R.id.et);
        et.addTextChangedListener(new TextWatcher() {
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
            {
                if (et.getText().toString().length() == 1 && et.getTag().toString().equals("true"))
                {
                    et.setTag("false");
                    et.setText(et.getText().toString().toUpperCase());
                    et.setSelection(et.getText().toString().length());
                }
                if(et.getText().toString().length() == 0)
                {
                    et.setTag("true");
                }
            }

            public void afterTextChanged(Editable editable) {

            }
        });

স্ট্যাটিকালি (অর্থাৎ আপনার লেআউট এক্সএমএল ফাইলে): সেট করুন android:inputType="textCapSentences" আপনার android:inputType="textCapSentences"

প্রোগ্রাম্যাটিক্যাল: আপনাকে InputType.TYPE_CLASS_TEXT অন্তর্ভুক্ত করতে হবে, উদাহরণস্বরূপ

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

প্রতিটি বাক্য প্রথম অক্ষরের পুঁজিকরণ অনুরোধ করার জন্য পাঠ্য এবং তার বৈচিত্র্যের সাথে মিলিত করা যেতে পারে।

- Google ডক্স





android-edittext