2011-09-22 8 views
10

मुझे आश्चर्य है कि संपादन टेक्स्ट में कार्यक्षमता जोड़ना संभव है जैसे कि जब मैं लेआउट xml में अपना नया विस्तारित फ़ील्ड शामिल करता हूं, तो मुझे फिर विशिष्ट तरीकों से व्यवहार करने के लिए गतिविधि वर्ग में कोई भी कोड जोड़ें।अतिरिक्त "डिफ़ॉल्ट" कार्यक्षमता देने के लिए EditText को विस्तारित करने का सही तरीका क्या है

उदाहरण के लिए, मैं एक संपादनफोन फ़ील्ड बनाना चाहता हूं जो केवल एक संपादन टेक्स्ट है जिसमें महत्वपूर्ण घटनाओं को सुनने और फ़ील्ड को संशोधित करने के लिए क्षेत्र को संशोधित करने के लिए उनके उचित स्थानों में कंटेनरिस और डैश शामिल हैं।

फिलहाल, मुझे हमेशा श्रोता कोड शामिल करना होगा और इसे मैन्युअल रूप से दृश्य में संलग्न करना होगा। लेकिन जाहिर है कि कक्षा में डिफ़ॉल्ट व्यवहार का एक टन है जो इसमें लपेटा गया है (उदाहरण के लिए, जब आप इसे क्लिक करते हैं तो यह कुंजीपटल लाता है)। इसलिए, मुझे लगता है कि यह इतना कठिन नहीं होना चाहिए, लेकिन मुझे यह स्पष्ट नहीं है कि इसे पूरा करने के लिए क्या कदम होंगे।

और स्पष्ट होने के लिए, मुझे उपरोक्त वर्णित फ़ोन विशिष्ट सुविधा के साथ मदद की ज़रूरत नहीं है (मैंने यह सब काम किया है), मैं यह समझने की कोशिश कर रहा हूं कि दृश्य को विस्तारित करने के तरीके को कैसे बढ़ाया जाए डिफ़ॉल्ट रूप से, इसलिए एक ही कोड के साथ मेरी गतिविधियों को अव्यवस्थित नहीं करना है।

उत्तर

24

असल में इसके बारे में कुछ भी जटिल नहीं है। आमतौर पर आप अपने कोड में को अपने EditText पर लागू करेंगे और यह काम करेगा।

public class PhoneEditText extends EditText { 

    public PhoneEditText(Context context) { 
     super(context); 
     init(); 
    } 

    public PhoneEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public PhoneEditText(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    private void init() { 
      // set your input filter here 
    } 
} 

एक्सएमएल लेआउट में आप बस पूरा पथ अपने कस्टम वर्ग के बजाय EditText के लिए प्रयोग करेंगे: लेकिन अगर आपको लगता है कि में एक पैटर्न देख सकते हैं और एक EditText जो हमेशा इस तरह आप बना सकते हैं बर्ताव चाहते हैं एक कस्टम कि जिस तरह से विजेट:

<my.package.path.to.PhoneEditText 
    attribute="value (all EditText attributes will work as they did before)" /> 
+1

और मैं ऑनकी विधि में ऑनकी श्रोता जोड़ दूंगा? –

+0

यदि आपको एक की आवश्यकता है: हां। लेकिन इनपुट इनपुट द्वारा पाठ इनपुट पर प्रतिबंध लागू किया जाता है। लेकिन आप 'init' में जो कुछ भी चाहते हैं उसे सेट और संशोधित कर सकते हैं। – Knickedi

+0

हां, मुझे यह देखने के लिए इनपुट फ़िल्टर देखना होगा कि यह मेरी समस्या पर लागू होता है, हालांकि मैं देखता हूं कि आप क्या कर रहे हैं और आप सही हैं ... यह बहुत आसान है :) –

संबंधित मुद्दे

 संबंधित मुद्दे