2014-07-15 8 views
17

मैं InputFilter उपयोग कर रहा हूँ इस तरह केवल अल्फा और संख्याएंड्रॉयड :: सेट प्रोग्राम के रूप में अन्य InputFilter

private InputFilter[] inputFilters = new InputFilter[] { new InputFilter() 
{ 
    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) 
    { 
     for (int i = start; i < end; ++i) 
     { 
      if (!Pattern.compile("[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890]*").matcher(String.valueOf(source.charAt(i))).matches()) 
      { 
       return ""; 
      } 
     } 

     return null; 
    } 
} }; 

अनुमति देने के लिए लेकिन समस्या यह है के साथ EditText की अधिकतम लंबाई वाली "एंड्रॉयड: maxLength" xml फ़ाइल में मूल्य नहीं है इस InputFilter

मुझे लगता है मैं EditText की अधिकतम लंबाई वाली

कोई भी इस के लिए अच्छा विचार है स्थापित करने के लिए InputFilter में कोड की जरूरत के साथ काम?

धन्यवाद

उत्तर

20

बस इस तरह से कोशिश

InputFilter

InputFilter filter = new InputFilter() { 
     @Override 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
      for (int i = start; i < end; ++i) 
      { 
       if (!Pattern.compile("[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890]*").matcher(String.valueOf(source.charAt(i))).matches()) 
       { 
        return ""; 
       } 
      } 

      return null; 
     } 
    }; 

आवेदन कैसे करें

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     EditText edt =(EditText)findViewById(R.id.edt) ; 

     edt.setFilters(new InputFilter[]{filter,new InputFilter.LengthFilter(10)}); 


    } 
+0

धन्यवाद, यह पूरी तरह से काम कर रहा – pokoso

29
public void setEditTextMaxLength(int length) { 
    InputFilter[] filterArray = new InputFilter[1]; 
    filterArray[0] = new InputFilter.LengthFilter(length); 
    edt_text.setFilters(filterArray); 
} 
+0

एक सरल विधि मेरे लिए काम करता .. – Deepak

+1

महान जवाब दीपक। यहां ध्यान देने योग्य एक छोटी सी बात: यदि उपयोगकर्ता सीमा के बाद टाइपिंग करता रहता है, तो यह बफर में संग्रहीत रहता रहता है और इस प्रकार संपादन सुझावों को बड़ा और बड़ा बना रहता है। –

+0

@ श्रिडत्त-कोठारी आपने जवाब क्यों संपादित किया? आपने इसे मेरे संस्करण में बदल दिया। इसे जिस तरह से छोड़ दिया था छोड़ दो। –

2

@ दीपक के पर बिल्डिंग मैं निम्नलिखित प्रयोग किया है:

public void setEditTextMaxLength(final EditText editText, int length) { 
    InputFilter[] FilterArray = new InputFilter[1]; 
    FilterArray[0] = new InputFilter.LengthFilter(length); 
    editText.setFilters(FilterArray); 
} 
5

हम एक EditText में चरित्र इनपुट सीमित करने के लिए, एक्सएमएल लेआउट में EditText हमें android:maxLength देता है यह करने के लिए चाहते हैं। लेकिन जावा कोड में आप सोच सकते हैं कि सेटमैक्सलेथेंथ (इंट लम्बाई) फ़ंक्शन क्यों नहीं है। इसका कारण यह है कि जब आप कुछ मूल्य स्वीकार करने के लिए एडिटटेक्स्ट को प्रतिबंधित करना चाहते हैं, तो आपको उन्हें फ़िल्टर करना होगा और इसे सेट फ़िल्टर द्वारा बुलाया जाएगा। हमारे संपादन टेक्स्ट को एक निश्चित आकार के लिए बनाने के लिए हम निम्नलिखित कोड का उपयोग कर सकते हैं।

EditText et = new EditText(this); 
int maxLength = 3; 
InputFilter[] FilterArray = new InputFilter[1]; 
FilterArray[0] = new InputFilter.LengthFilter(maxLength); 
et.setFilters(FilterArray); 
8

एक सरल एक-लाइनर होगा:

myEditText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(10) }); 

//replace 10 with required length. 
संबंधित मुद्दे