2016-09-10 15 views
13

अपने Android एप्लिकेशन में TextInputLayout उपयोग कर रहा हूँ मेरी इनपुट फ़ील्ड के लिए कि स्वच्छ चल लेबल प्रभाव को प्राप्त करने। मुझे पता है कि मुझे TextInputEditText का उपयोग करना चाहिए, साथ ही लैंडस्केप मोड में संकेतों को प्रदर्शित करने की अनुमति देने के लिए और इनपुट पूरी स्क्रीन भरता है।TextInputLayout और AutoCompleteTextView

हालांकि, मेरे कुछ इनपुट फ़ील्ड में मुझे AutoCompleteTextView का उपयोग करने पर स्वत: पूर्णता मिल रही है (जो आईएमओ के पास वास्तव में असंगत नाम है - "एडिटटेक्स्ट" के बजाय "टेक्स्ट व्यू" - लेकिन यह एक और कहानी है) और यह स्पष्ट रूप से विरासत में मिलता है EditText से। इस प्रकार यह समान कार्यक्षमता नहीं है जैसे TextInputEditText लाता है।

तो मुझे आश्चर्य है कि क्या एक ही संकेत-परिदृश्य कार्यक्षमता प्राप्त करने का कोई तरीका है (मेरा अपना TextInputAutoCompleteTextView कार्यान्वयन, बिना) और बिना उत्पादित लिंट चेतावनियों से बचने के लिए। क्या मुझसे कोई चूक हो रही है? मुझे लगता है कि मुझे लगता है कि उन्होंने इस विशिष्ट चीज़ के लिए EditText के सभी प्रत्यक्ष और अप्रत्यक्ष उप-वर्गों के कस्टम संस्करण नहीं बनाए हैं, इसलिए क्या मुझे अपना खुद का बनाने की उम्मीद है?

उत्तर

12

एक छोटी सी देर हो गई, लेकिन हां, आप अपने खुद के कार्यान्वयन रोल करना होगा। अच्छी खबर यह है कि यह काफी सरल है। , तदनुसार

https://android.googlesource.com/platform/frameworks/support.git/+/master/design/src/android/support/design/widget/TextInputEditText.java

यहाँ क्या TextInputAutoCompleteTextView नज़र आ सकते हैं: यहाँ TextInputEditText कैसे लागू किया गया था है।

public class TextInputAutoCompleteTextView extends AppCompatAutoCompleteTextView { 

    public TextInputAutoCompleteTextView(Context context) { 
     super(context); 
    } 

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

    public TextInputAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
     final InputConnection ic = super.onCreateInputConnection(outAttrs); 
     if (ic != null && outAttrs.hintText == null) { 
      // If we don't have a hint and our parent is a TextInputLayout, use it's hint for the 
      // EditorInfo. This allows us to display a hint in 'extract mode'. 
      final ViewParent parent = getParent(); 
      if (parent instanceof TextInputLayout) { 
       outAttrs.hintText = ((TextInputLayout) parent).getHint(); 
      } 
     } 
     return ic; 
    } 
} 
+0

कभी बहुत देर हो चुकी, मेरे दोस्त! हाँ, मैंने उतना सोचा था। मुझे लगता है, TextInputEditText के रूप में देखकर इतना सीधा है कि यह वास्तव में एक समस्या नहीं है। आपके प्रतिक्रिया के लिए धन्येवाद! ☺ – sindrenm

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