2011-03-14 16 views
5

के बाद मैं एक editText InputFilter.LengthFilter प्रयोग करने के लिए अधिकतम अक्षरों की सीमा निर्धारित करते हैं, वहाँ editText onTextChanged पर प्रतिक्रिया करने के लिए के बाद यह वर्णों की अधिकतम संख्या तक पहुँच जाता है बनाने के लिए एक तरीका है? यदि नहीं, तो क्या संपादन टेक्स्ट में अधिकतम वर्णों को सेट करने का एक आसान तरीका है और अभी भी टेक्स्ट चेंज किए गए ईवेंट पर प्रतिक्रिया दें? धन्यवादएंड्रॉयड editText अधिकतम सीमा

उत्तर

12

EditText के लिए एक्सएमएल ही में निम्नलिखित Attrib,

android:maxLength="20" 

धन्यवाद देते हैं।

+0

मेरी अधिकतम लंबाई परिवर्तनीय है ... यह कुछ चर पर निर्भर करता है, इसलिए मुझे इसे कोड से सेट करना होगा। –

+2

फिर इस इनपुटफिल्टर को आजमाएं [] फ़िल्टरअरे = नया इनपुट फ़िल्टर [1]; FilterArray [0] नई InputFilter.LengthFilter (चर) =; संपादित करें एंटर्री व्यू.सेट फ़िल्टर (फ़िल्टरएरे); –

+0

यह मैंने किया है, लेकिन अधिकतम सीमा तक पहुंचने के बाद, जब मैं टाइप करना चाहता हूं तो मैं ईवेंट को कैच नहीं कर सकता –

0

मैं एक ही समस्या है और पर कुछ शोध के माध्यम से जा रहा था तो मेरे इस समाधान मिल गया। शानदार समाधान के लिए @ njzk2 के लिए धन्यवाद। इसे यहां पोस्ट करना ताकि अन्य लोग जवाब प्राप्त कर सकें।

maxLengthEditText में विशेषता वास्तव में InputFilter है, जिसे आप स्वयं लिख सकते हैं और कोड से आपूर्ति कर सकते हैं।

आप इनपुटफिल्टर। लम्बाईफिल्टर के कार्यान्वयन को देख सकते हैं, जो मूल रूप से null लौटाता है यदि कोई ओवरफ़्लो नहीं है। (link देखें)

कि करने के लिए एक छोटे संशोधन के साथ: InputFilter.LengthFilter के लिए एक विस्तार है जिसमें आप null को super फोन और इसकी तुलना तय करने के लिए यदि आप एक चेतावनी प्रदर्शित करने के लिए की जरूरत पैदा करते हैं।

editText.setInputFilters(new InputFilter[] { 
    new InputFilter.LengthFilter(max) { 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
      CharSequence res = super.filter(source, start, end, dest, dstart, dend); 
      if (res != null) { // Overflow 
        Toast.makeText(this,"OVERFLOW!",Toast.LENGTH_SHORT).show(); 

      } 
      return res; 
     } 
    } 
}); 
संबंधित मुद्दे