जवाबों:
एंड्रॉइड के पास वास्तव में इसके लिए बिल्ट-इन InputFilter है !
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
सावधान रहें, setFilters
अन्य सभी विशेषताओं को रीसेट जाएगा जो XML के माध्यम से स्थापित किए गए थे (यानी maxLines
, inputType
, imeOptinos
...)। इसे रोकने के लिए, आप पहले से मौजूद लोगों के लिए फ़िल्टर (ओं) को जोड़ें।
InputFilter[] editFilters = <EditText>.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = <YOUR_FILTER>;
<EditText>.setFilters(newFilters);
maxLength
) पर आपके द्वारा सेट किए गए फ़िल्टर को ओवरराइड करने से बचने के InputFilter.AllCaps()
लिए, editText.getFilters
सरणी में जोड़ने का प्रयास करें । देखें stackoverflow.com/a/18934659/3890983
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
कोटलिन की अद्भुत! <३
यदि आप उपयोगकर्ता को अपने EditText में डिफ़ॉल्ट रूप से अपरकेस अक्षरों में लिखने के लिए बाध्य करना चाहते हैं , तो आपको बस जोड़ना होगा android:inputType="textCapCharacters"
। (उपयोगकर्ता अभी भी मैन्युअल रूप से लोअरकेस में बदल सकता है।)
सेट input type
करने के लिए TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
। keyboard
उसका सम्मान करना चाहिए।
आप दो तरह से इस्तेमाल कर सकते हैं।
पहला तरीका:
android:inputType="textCapSentences"
अपने EditText पर सेट करें ।
दूसरा तरीका:
जब उपयोगकर्ता नंबर दर्ज करता है तो आपको टेक्स्ट वॉचर का उपयोग करना होगा और छोटे से बड़े अक्षर में बदलना होगा।
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
edittext.setSelection(edittext.length()); //fix reverse texting
}
}
});
आप android:textAllCaps="true"
EditText में अपनी xml फ़ाइल में संपत्ति जोड़ सकते हैं । यह सभी कैप्स मोड में प्रदर्शित होने के लिए सॉफ्टिनिट कीबोर्ड को लागू करेगा। आपके द्वारा दर्ज किया गया मान अपरकेस में दिखाई देगा। हालाँकि, यह सुनिश्चित नहीं करेगा कि उपयोगकर्ता केवल UpperCase
पत्रों में ही प्रवेश कर सकता है । यदि वे चाहें, तो वे अभी भी निचले मामलों के पत्रों पर वापस आ सकते हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि आउटपुट Edittext
सभी कैप्स में है, तो आपको क्लास के toUpperCase()
तरीके का उपयोग करके इनपुट स्ट्रिंग को मैन्युअल रूप से परिवर्तित करना होगा String
।
android:textAllCaps="true"
केवल TextView ( stackoverflow.com/a/28803492/5268730 ) की एक संपत्ति है । android:inputType="textCapCharacters"
इसके बजाय उपयोग करें ।
कीबोर्ड से निपटने के बारे में चिंता करने के बजाय, किसी भी इनपुट, लोअरकेस या अपरकेस को स्वीकार क्यों न करें और स्ट्रिंग को uvercase में बदलें?
निम्नलिखित कोड को मदद करनी चाहिए:
EditText edit = (EditText)findViewById(R.id.myEditText);
String input;
....
input = edit.getText();
input = input.toUpperCase(); //converts the string to uppercase
यह उपयोगकर्ता के अनुकूल है क्योंकि उपयोगकर्ता के लिए यह जानना अनावश्यक है कि आपको अपरकेस में स्ट्रिंग की आवश्यकता है। उम्मीद है की यह मदद करेगा।
इससे भी बेहतर ... कोटलिन में एक लाइनर ...
// gets your previous attributes in XML, plus adds AllCaps filter
<your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
किया हुआ!
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
में kotlin , .kt फ़ाइल किए जाने वाले परिवर्तन में:
edit_text.filters = edit_text.filters + InputFilter.AllCaps()
आईडी के साथ विजेट के सीधे उपयोग के लिए सिंथेटिक संपत्ति का उपयोग करें। और XML में, अपने संपादित पाठ के लिए कुछ और ध्वज जोड़ें जैसे:
<EditText
android:id="@+id/edit_text_qr_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...other attributes...
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
यह कीबोर्ड को अपडेट करेगा जैसा कि अपर केस सक्षम है।
इनपुट फ़िल्टर का उपयोग करें
editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
}
editText.setSelection(editText.getText().length());
}
});
बस यह करें:
// ****** Every first letter capital in word *********
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
/>
//***** if all letters are capital ************
android:inputType="textCapCharacters"
मेरे लिए इसने android को जोड़कर काम किया : textAllCaps = "true" और android: inputType = "textCapracters"
<android.support.design.widget.TextInputEditText
android:layout_width="fill_parent"
android:layout_height="@dimen/edit_text_height"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
सभी पूंजी प्राप्त करने के लिए, अपने XML में निम्नलिखित का उपयोग करें:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
स्वीकृत उत्तर के आधार पर, यह उत्तर वैसा ही करता है, लेकिन कोटलिन में। बस आसानी से मुकाबला करने के लिए: ·)
private fun EditText.autocapitalize() {
val allCapsFilter = InputFilter.AllCaps()
setFilters(getFilters() + allCapsFilter)
}
filters += InputFilter.AllCaps()
: D
जब संपादित करें क्लिक करने के लिए पूंजीकृत कीबोर्ड प्राप्त करना हो तो अपने xml में इस कोड का उपयोग करें,
<EditText
android:id="@+id/et"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="Input your country"
android:padding="10dp"
android:inputType="textCapCharacters"
/>
मैं एंड्रॉइड 5.1 और एंड्रॉइड 6.0 (दोनों पर स्थापित एक ही apk) दोनों के लिए अपने ऐप का निर्माण करने के लिए विज़ुअल स्टूडियो 2015 / ज़ामरीन का उपयोग कर रहा हूं।
जब मैंने android:inputType="textCapCharacters"
अपने axml में निर्दिष्ट किया, तो AllCaps कीबोर्ड एंड्रॉइड 6.0 पर अपेक्षित रूप से दिखाई दिया, लेकिन एंड्रॉइड 5.1 नहीं। मैंने android:textAllCaps="true"
अपने axml में जोड़ा और अभी भी Android 5.1 पर कोई AllCaps कीबोर्ड नहीं है। मैंने एक फ़िल्टर का उपयोग करके सेट किया है EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
और जबकि नरम कीबोर्ड एंड्रॉइड 5.1 पर कम केस वर्ण दिखाता है, इनपुट फ़ील्ड अब AllCaps है।
संपादित करें: मेरे द्वारा देखे गए और ओएस-संबंधी होने का व्यवहार संबंधी अंतर वास्तव में थे क्योंकि मेरे पास परीक्षण उपकरणों पर Google कीबोर्ड के विभिन्न संस्करण थे। एक बार जब मैंने नवीनतम Google कीबोर्ड (इस लेखन के रूप में जुलाई 2016 को जारी) में उपकरणों को अपडेट किया, तो 'ऑल कैप्स' का व्यवहार OSes के अनुरूप था। अब, सभी डिवाइस कीबोर्ड पर लोअर-केस कैरेक्टर दिखाते हैं, लेकिन इनपुट ऑल कैप्स के कारण होता हैSetFilters(new IInputFilter[] { new InputFilterAllCaps() });
एर्ल्वोल्टन के उत्तर के बराबर ज़मारिन:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
बस, अपने xml फ़ाइल के एडिट टेक्स्ट में नीचे कोड जोड़ें।
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
और यदि आप अपरकेस टेक्स्ट और अंक दोनों को अनुमति देना चाहते हैं तो नीचे दिए गए कोड का उपयोग करें।
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
हालांकि होना चाहिए ।