TextInputLayout उपयोगकर्ता पर ध्यान केंद्रित करने से पहले EditText संकेत नहीं दिखा रहा है


96

मैं EditTexts के साथ फ्लोटिंग लेबल दिखाने के लिए हाल ही में रिलीज़ की गई Android डिज़ाइन समर्थन लाइब्रेरी का उपयोग कर रहा हूं । लेकिन मैं इस समस्या का सामना कर रहा हूं कि एडिटटेक्स्ट पर संकेत यूआई प्रदान किए जाने पर नहीं दिखाई दे रहा है, लेकिन मैं एडिटेक्स पर ध्यान केंद्रित करने के बाद संकेत देखता हूं।

मेरा लेआउट इस प्रकार है:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin">

            <android.support.design.widget.TextInputLayout
                android:id="@+id/name_et_textinputlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin">

                <EditText
                    android:id="@+id/FeedBackerNameET"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/feedbackname"
                    android:inputType="textPersonName|textCapWords" />
            </android.support.design.widget.TextInputLayout>

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

                <EditText
                    android:id="@+id/FeedBackerEmailET"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/feedbackemail"
                    android:inputType="textEmailAddress" />

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

            <Spinner
                android:id="@+id/SpinnerFeedbackType"
                android:layout_width="fill_parent"
                android:layout_height="48dp"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:entries="@array/feedbacktypelist"
                android:prompt="@string/feedbacktype" />

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

                <EditText
                    android:id="@+id/EditTextFeedbackBody"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/feedbackbody"
                    android:inputType="textMultiLine|textCapSentences"
                    android:lines="5" />

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

            <CheckBox
                android:id="@+id/CheckBoxFeedBackResponse"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:text="@string/feedbackresponse" />

            <Button
                android:id="@+id/ButtonSendFeedback"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:text="@string/feedbackbutton" />
        </LinearLayout>
    </ScrollView>

</FrameLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="5dp"
    android:background="@drawable/toolbar_shadow" />
</FrameLayout>

मैं भी TextInputLayoutविधि का उपयोग करने के लिए संकेत सेट करने की कोशिश की है, setHintलेकिन कोई भाग्य।

mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout);
mNameTextInputLayout.setErrorEnabled(true);
mNameTextInputLayout.setHint(feedBackerNameET.getHint());

mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout);
mEmailTextInputLayout.setErrorEnabled(true);
mEmailTextInputLayout.setHint(feedBackerEmail.getHint());

mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout);
mBodyTextInputLayout.setErrorEnabled(true);
mBodyTextInputLayout.setHint(feedBackBody.getHint());

मेरी भी यही समस्या है। मेरे आश्चर्यचकित करने के लिए 4.1 एमुलेटर पर एप्लिकेशन को चलाना ठीक काम किया, लेकिन मेरे एम पूर्वावलोकन पर नेक्सस टेक्स्टइनप्यूटलैटआउट ने दुर्व्यवहार किया और एम्बेडेड एडिट टेक्स्ट के लिए संकेत नहीं दिखा रहा था।
साशोमशो

क्या आप अपने संकेत रंग की जांच कर सकते हैं, या अपने दृश्य पृष्ठभूमि के रंग को बदलने की कोशिश कर सकते हैं, हो सकता है कि वे वहां हों लेकिन आप रंग के कारण देख सकते हैं
अल्टिमो_म

@Ultimo_m मुझे लगता है कि संकेत रंग समस्या नहीं होनी चाहिए। हालाँकि मैं पृष्ठभूमि का रंग बदलने के बाद एक नज़र रखने की कोशिश करूँगा।
शजील अफजल

1
@ शाजिल अफ़ज़ल मैं आपको यह सुझाव इसलिए बता रहा हूं क्योंकि मुझे भी आपकी तरह ही समस्या थी, और जब मैंने इस दृश्य को पृष्ठभूमि में जोड़ा तो मैंने संकेत देखा। मैं इसे एक टुकड़े के अंदर उपयोग कर रहा हूं। मैंने जावा से कोई कोड नहीं जोड़ा, मैंने जो भी किया वह xml से है
Ultimo_m

2
अंशों को जोड़ने / निकालने पर मैं यह समस्या देख रहा हूं। लेकिन अगर मैं टुकड़े दिखाता / छिपाता हूं, तो मुझे यह मुद्दा दिखाई नहीं देता।
डेव जेन्सेन

जवाबों:


84

अपडेट करें:

यह एक बग है जिसे लाइब्रेरी के संस्करण 22.2.1 में तय किया गया है।

मूल उत्तर:

जैसा कि @shkschneider द्वारा उल्लेख किया गया है, यह एक ज्ञात बग है । Github user @ ljubisa987 ने हाल ही में एक वर्कस्टार के लिए Gist पोस्ट किया:

https://gist.github.com/ljubisa987/e33cd5597da07172c55d

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


1
वैसे Android MDC एक पूर्वावलोकन संस्करण है।
डेव जेन्सेन

1
BTW, ऐसा लग रहा है कि बग की स्थिति अब "फ्यूचर रिलीज़" है।
डेव जेन्सेन

2
टिप्पणी # 28 यहाँ: code.google.com/p/android/issues/… मेरे लिए काम करता है
J_Sizzle

1
22.2.1 संस्करण में तय किया गया।
जादुवे

3
क्या हमें यकीन है कि यह V22.2.1 में तय किया गया है? मैं इस मुद्दे को डिज़ाइन लाइब्रेरी v22.2.1 में Android संस्करण 5.1.1 पर चला रहा हूं। मेरे पास एक टूलबार में दो EditText हैं जो मैं गतिविधि संक्रमण हूं और ध्यान केंद्रित करने तक संकेत पाठ नहीं दिखा रहा है।
स्टुइरलिंग

13

यह Android डिज़ाइन लाइब्रेरी का एक ज्ञात बग है। इसे स्वीकार और सौंपा गया है

इसलिए आपको अगले Android डिज़ाइन लाइब्रेरी रिलीज़ में इसे ठीक करना चाहिए।

इस बीच, आप हैकी-फ़िक्स के लिए समस्या ट्रैकर देख सकते हैं जो वहां पोस्ट किया जा सकता है, लेकिन मुझे अब तक कोई जानकारी नहीं है।

और हाँ, यह केवल लॉलीपॉप और इसके बाद के संस्करण को प्रभावित करता है।


1
यह समस्या 22.2.1 संस्करण में
सैम

11

यह मेरे लिए डिज़ाइन लाइब्रेरी 23.1.1 में काम करता है:

TextInputLayout की xml विशेषताओं में संकेत रंग सेट करें:

    <android.support.design.widget.TextInputLayout
        ....
        android:layout_margin="15dp"
        android:textColorHint="@color/hintColor"
        android:layout_width="match_parent"
        ...

textColorHint संपत्ति ने इसे मेरे लिए भी तय किया।
JoM

6

यह समस्या 22.2.1 संस्करण में तय की गई है


5

आप का उपयोग करना चाहिए android.support.v7.widget.AppCompatEditTextके रूप में EditTextऔर सेट android:hintनीचे की तरह

<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <android.support.v7.widget.AppCompatEditText
                android:id="@+id/etx_first_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"                    
                android:inputType="text"
                android:hint="@string/hint_first_name"/>
    </android.support.design.widget.TextInputLayout>

3
   <android.support.design.widget.TextInputLayout
            android:id="@+id/editText1"
            android:layout_margin="15dp"
            android:layout_centerVertical="true"
            android:layout_width="match_parent"

            android:layout_height="wrap_content">

              <AutoCompleteTextView
                android:id="@+id/editText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:singleLine="true"
                android:hint="Add City" />

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

इस कोड का उपयोग करें स्निपेट करें। सुनिश्चित करें कि आपकी गतिविधि AppCompatActivity है। और निर्भरता भी नवीनतम संस्करणों के साथ है

compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:design:22.2.0'

एंड्रॉइड स्टूडियो को नवीनतम संस्करण में अपडेट करें। यहाँ आउटपुट देखें


3

यदि आप अपने EditText संकेत को प्रोग्रामेटिक रूप से सेट कर रहे हैं तो यह काम नहीं करेगा! आपको TextInputLayout को स्वयं पर संकेत सेट करने की आवश्यकता है।

TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.usernameTextInputLayout);
textInputLayout.setHint(getString(R.string.username_hint));

यहाँ XML के मामले में आप सोच रहे हैं:

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

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/usernameEt"
                android:layout_width="match_parent"
                android:layout_height="@dimen/default_height"
                android:layout_marginEnd="@dimen/default_margin"
                android:layout_marginStart="@dimen/default_margin"
                android:maxLength="@integer/username"
                tools:hint="Username" />

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

3

यह समस्या v23.0.1समर्थन डिज़ाइन लायब्रेरी से हल है । मैं अपने अद्यतन appcompat-v7करने के लिए 23.0.1, compileSdkVersionकरने के लिए 23और buildToolsVersionकरने के लिए 23.0.1में build.gradle

android {    
compileSdkVersion 23
buildToolsVersion "23.0.1"
}

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}

जब आप समर्थन डिजाइन संस्करण बदल रहे हैं तो compleSdkVersion, buildtools संस्करण और appCompatVersion को बदलना आवश्यक है?
श्रीनिवास

ऐसा इसलिए होता है क्योंकि प्रोजेक्ट को संकलित करने के लिए 'समर्थन पुस्तकालयों' v23 को API23 की आवश्यकता होती है। तो मुख्य संबंध l सपोर्ट लाइब्रेरी ’और d कंपाइलस्कैडवर्सन’ के बीच है। आपको हमेशा 'compileSdkVersion' से मेल खाना चाहिए, भले ही 'targetSdkVersion' या 'minSdkVersion' कम हों। कारण सरल है, पुस्तकालय का संस्करण एंड्रॉइड एसडीके के संस्करण को दर्शाता है इसके खिलाफ बनाया गया था।
वाहिब उल हक

2

मैंने इस कोड के साथ अपनी समस्या हल की:

new Handler().postDelayed(
        new Runnable() {
            @Override
            public void run() {
                TextInputLayout til = (TextInputLayout) someParentView.findViewById(R.id.til);
                til.setHint("Your Hint Text");
                til.bringToFront();
            }
        }, 10);

यहाँ कुंजी है bringToFront। यह TextInputLayoutअपने ड्राइंग को फिर से करने के लिए मजबूर करता है, जो करने के समान नहीं है invalidate()। आप प्रदर्शित करने के लिए कोशिश कर रहे हैं TextInputLayoutएक पर viewहै कि animationsया tranistions, आप के अंत में उपरोक्त कोड को निष्पादित करने की जरूरत है animationया transition। बस यह सुनिश्चित करें कि उपरोक्त कोड UI पर चलता है thread


0

जब आप OnTousListener को EditText पर सेट करते हैं, तो यह समस्या प्रकट होती है - EditText को विस्तारित करने का प्रयास करें और कई onFocusListeners का समर्थन करें



0

हल की गई समस्या: Goto build.gradle of ur app और check design Library। संकलन 'com.android.support:design:22.2.1' यह 22.2.1 या नया होना चाहिए।


0

समस्या संकेत रंग है। कुछ टाइप करते ही यह सफेद हो जाता है। कृपया संकेत रंग बदलें या पृष्ठभूमि रंग बदलें। आपको टाइप करते हुए हिंट दिखाई देगा।


0

इसका एक सरल समाधान है क्योंकि यह मेरे लिए काम करता है

<android.support.design.widget.TextInputLayout
    android:id="@+id/activity_login_til_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="27dp"
    android:layout_marginTop="24dp"
    android:padding="10dp"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="#000000"
    app:passwordToggleDrawable="@drawable/passwordviewtoggleselector"
    android:theme="@style/Base.TextAppearance.AppCompat">
      <!---- add this line and theme as you need ----->
    <android.support.design.widget.TextInputEditText
        android:id="@+id/activity_login_et_password"
        android:layout_width="match_parent"
        android:layout_height="58dp"
        android:hint="Password"
        android:inputType="textPassword"
        android:padding="10dp"
        android:textColor="#f5ab3a"
        android:textColorHint="#e6d2d1cf"
        android:textSize="20dp" />

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

बस TextEditLayout में android: theme = "@ style / Base.TextAppearance.AppCompat" जोड़ें और इसे काम करना चाहिए और आप आवश्यकतानुसार विषय बदल सकते हैं।



0

मुझे कुछ अलग मिला।

के लिए शैली सेट करते समय fragment,

f1.setStyle(DialogFragment.STYLE_NO_FRAME,android.R.style.Theme_DeviceDefault_Light);

जब मैं अलग-अलग स्टाइल्स की कोशिश कर रहा था तो बग खत्म हो गया था "Theme_DeviceDefault_Dialog"

कोशिश करो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.