android - EditText के लिए पहला अक्षर पूंजीकरण




android-edittext (6)

इस कोड को आज़माएं, यह सभी शब्दों के पहले चरित्र को पूंजीकृत करेगा।

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

मैं थोड़ा निजी todo सूची ऐप पर काम कर रहा हूं और अब तक सब कुछ ठीक से काम कर रहा है। एक छोटा सा क्विर्क है जिसे मैं समझना चाहता हूं। जब भी मैं एक नया आइटम जोड़ने के लिए जाता हूं, मेरे पास एक संपादन टेक्स्ट दृश्य के अंदर एक संवाद होता है। जब मैं एडिटटेक्स्ट व्यू का चयन करता हूं, तो कीबोर्ड टेक्स्ट में प्रवेश करने के लिए आता है, जैसा कि इसे करना चाहिए। अधिकांश अनुप्रयोगों में, डिफ़ॉल्ट लगता है कि शिफ्ट कुंजी पहले अक्षर के लिए आयोजित की जाती है ... हालांकि यह मेरे विचार के लिए ऐसा नहीं करता है। ठीक करने का एक आसान तरीका होना चाहिए, लेकिन मैंने संदर्भ को बार-बार खोजा है और इसे नहीं मिला है। मुझे लगता है कि एडाप्टर द्वारा लोड किए गए संदर्भ के लिए एक एक्सएमएल विशेषता होना चाहिए, लेकिन मुझे यह नहीं पता कि यह क्या है।


इससे पहले यह android:capitalize="words" , जिसे अब बहिष्कृत किया गया है। अनुशंसित विकल्प android:inputType="textCapWords" का उपयोग करना है android:inputType="textCapWords"

कृपया ध्यान दें कि यह केवल तभी काम करेगा जब आपका डिवाइस कीबोर्ड ऑटो कैपिटल सेट सेटिंग सक्षम हो।

इसे प्रोग्रामिक रूप से करने के लिए, निम्न विधि का उपयोग करें:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);


एक्सएमएल में इनपुट प्रकार और साथ ही साथ जावा फ़ाइल में सेट करें,

एक्सएमएल में,

एंड्रॉयड: inputType = "textMultiLine | textCapSentences"

यह मल्टीलाइन और जावा फ़ाइल में भी अनुमति देगा,

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

सुनिश्चित करें कि आपके कीबोर्ड की ऑटो-कैपिटलेशन सेटिंग सक्षम है


बस अपने 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


सांख्यिकीय रूप से (यानी आपके लेआउट एक्सएमएल फ़ाइल में): android:inputType="textCapSentences" सेट करें android:inputType="textCapSentences" आपके EditText

प्रोग्रामेटिक रूप से: आपको EditText को EditText के InputType InputType.TYPE_CLASS_TEXT में शामिल InputType.TYPE_CLASS_TEXT , उदाहरण के लिए

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

प्रत्येक वाक्य के पहले चरित्र के पूंजीकरण का अनुरोध करने के लिए पाठ और इसकी विविधताओं के साथ जोड़ा जा सकता है।

- गूगल दस्तावेज


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

या android:inputType="textCapSentences" केवल तभी काम करेगा यदि आपका डिवाइस कीबोर्ड ऑटो कैपिटल सेट सेटिंग सक्षम है।





android-edittext