2015-12-23 7 views
6

मेरे पास एक टेक्स्ट इनपुटपुट है जिसमें इसके अंदर एक संपादन टेक्स्ट है।TextInputLayout त्रुटि रंग साफ़ नहीं हो रहा है?

<android.support.design.widget.TextInputLayout 
    android:id="@+id/textInputLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <EditText 
     android:id="@+id/editText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:hint="Enter Text" /> 

</android.support.design.widget.TextInputLayout> 

मेरे जावा कोड:

((TextInputLayout) findViewById(R.id.textInputLayout)).setError("ERROR"); 

जब मैं फोन setError ("त्रुटि"), और लेबल (संकेत) रंग और EditText के नीचे

यह मेरा एक्सएमएल है लाइन रंग लाल हो जाता है और त्रुटि प्रकट होती है। यह वह व्यवहार है जिसे मैं उम्मीद करता हूं।

अब मान लें कि मैं अपनी गतिविधि को नष्ट करने से पहले setError (null) पर कॉल नहीं करता हूं। अब मैं वही गतिविधि फिर से खोलता हूं। मैं देख सकता हूं कि मेरे अनुप्रयोग में सभी संपादन टेक्स्ट फ़ील्ड के लिए नीचे की रेखा लाल बनी हुई है, हालांकि लेबल रंग रीसेट होने लगता है और त्रुटि संदेश खारिज कर दिया गया है। यह हमेशा पुनरुत्पादित नहीं होता है, लेकिन अगर मैं कोशिश करता रहता हूं, तो मैं इसे अंततः प्राप्त कर सकता हूं।

मैं 5.1.1 के साथ नेक्सस 4 का उपयोग कर रहा हूं।

क्या मैं कुछ गलत कर रहा हूं?

+0

इसे लेआउट को फिर से बनाना चाहिए और मुझे समझ में नहीं आता कि गतिविधि को नष्ट करने के बाद भी आपको लाल रेखा क्यों मिल रही है। क्या आप थोड़ा और कोड पोस्ट कर सकते हैं? – Mangesh

+0

अरे आदमी ने इसे हल किया है। मेरा भी वही है –

उत्तर

5

यह AppCompat लाइब्रेरी में बग के कारण है।

elyess.a ... @ gmail.com द्वारा रिपोर्ट, 19 अक्टूबर, 2015 का उपयोग करते हुए डिजाइन समर्थन पुस्तकालय 23.1.0

कदम समस्या पुन: पेश करने (उचित होने पर नमूना कोड सहित)।

  • (एक रूप में अर्थात) एक टीआईएल पर SetError
  • टीआईएल एक लाल रेखांकन (ठीक)
  • नेविगेट वापस है और गतिविधि फिर से दर्ज करें। या टीआईएल के साथ एक और गतिविधि पर जाएं।

क्या हुआ।

  • सभी टीआईएल में अन्य क्रियाकलापों में भी एक लाल रेखा रेखा है। (लेकिन कोई त्रुटि पाठ नहीं)।
  • लाल अंडरलाइन केवल ऐप बंद करने के बाद ही गायब हो जाती है।

इसके अलावा यहां सूचना:


मुद्दा स्थिति पर 11 नवंबर 2015 FutureRelease में बदल गया था, इसलिए हमारे द्वारा सुधार के लिए जल्द ही आ रहा है उम्मीद कर सकते हैं।

इस बीच में, ऐसा लगता है 3 समाधान देखते हैं:

0

यह समस्या com.android.support के संस्करण 23.1.1 पर हल किया जाता है: ... पुस्तकालयों

0

जैसा कि @ रिचर्ड ने कहा, यह एक बग है। Issue 190829: TextInputLayout setError causes all TILs in the app to have red underline

मैंने स्थिर स्थिति को पृष्ठभूमि में वापस सेट करने का समाधान उपयोग किया है। तुम सिर्फ अपने स्वयं के कस्टम वर्ग के साथ TextInputLayout विस्तार कर सकते हैं जहां setError() विधि ओवरराइड:

public class CustomTextInputLayout extends TextInputLayout { 

    // Constructors... 

    @Override 
    public void setError(@Nullable CharSequence error) { 

     super.setError(error); 
     if ((getEditText() != null && getEditText().getBackground() != null) && 
      (Build.VERSION.SDK_INT == 22 || Build.VERSION.SDK_INT == 21)) { 
      Drawable drawable = getEditText().getBackground().getConstantState().newDrawable(); 
      getEditText().setBackgroundDrawable(drawable); 
     } 
    } 
} 

और फिर मैं EditTexts लपेटने के लिए इस वर्ग के पुन: उपयोग कर रहा हूँ। मुझे किसी भी दुष्प्रभाव का अनुभव नहीं हुआ।

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