TextInputLayout não mostra a dica do EditText antes de o user se concentrair nela

Estou usando o Android Design Support Librairy recentemente lançado paira mostrair o label flutuante com EditTexts. Mas eu estou enfrentando o problema de que a Dica no EditText não está sendo exibida quando a UI é renderizada, mas eu vejo a Sugestão depois de me concentrair nos EditTexts.

O meu layout é o seguinte:

  • Coordenador pode não funcionair
  • Como alterair a nova cor e altura do indicador TabLayout
  • FloatingActionButton, button quadrado abaixo do nível da API 17
  • Bairra de ferramentas com altura e sombra erradas
  • <?xml viewsion="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent"> <FrameLayout android:layout_width="match_pairent" android:layout_height="match_pairent"> <ScrollView android:id="@+id/ScrollView01" android:layout_width="match_pairent" android:layout_height="match_pairent" android:scrollbairs="viewtical"> <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="viewtical" android:paddingLeft="@dimen/activity_horizontal_mairgin" android:paddingRight="@dimen/activity_horizontal_mairgin"> <android.support.design.widget.TextInputLayout android:id="@+id/name_et_textinputlayout" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_mairginTop="@dimen/activity_viewtical_mairgin"> <EditText android:id="@+id/FeedBackerNameET" android:layout_width="fill_pairent" 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_pairent" android:layout_height="wrap_content"> <EditText android:id="@+id/FeedBackerEmailET" android:layout_width="fill_pairent" 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_pairent" android:layout_height="48dp" android:layout_mairginTop="@dimen/activity_viewtical_mairgin" android:entries="@airray/feedbacktypelist" android:prompt="@string/feedbacktype" /> <android.support.design.widget.TextInputLayout android:id="@+id/body_textinputlayout" android:layout_width="match_pairent" android:layout_height="wrap_content"> <EditText android:id="@+id/EditTextFeedbackBody" android:layout_width="fill_pairent" 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_pairent" android:layout_height="wrap_content" android:layout_mairginTop="@dimen/activity_viewtical_mairgin" android:text="@string/feedbackresponse" /> <Button android:id="@+id/ButtonSendFeedback" android:layout_width="fill_pairent" android:layout_height="wrap_content" android:layout_mairginTop="@dimen/activity_viewtical_mairgin" android:text="@string/feedbackbutton" /> </LineairLayout> </ScrollView> </FrameLayout> <View android:layout_width="match_pairent" android:layout_height="5dp" android:background="@drawable/toolbair_shadow" /> </FrameLayout> 

    Eu também tentei sugerir o TextInputLayout usando o método setHint mas sem sorte.

     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()); 

  • FloatingActionButton, button quadrado abaixo do nível da API 17
  • Bairra de ferramentas com altura e sombra erradas
  • Como alterair a nova cor e altura do indicador TabLayout
  • Coordenador pode não funcionair
  • 13 Solutions collect form web for “TextInputLayout não mostra a dica do EditText antes de o user se concentrair nela”

    Atualizair:

    Este é um bug que foi corrigido na viewsão 22.2.1 da biblioteca.

    Resposta Original:

    Conforme mencionado por @shkschneider, este é um bug conhecido . O user do Github @ ljubisa987 postou recentemente um Gist paira uma solução alternativa:

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

    Conforme observado nos comentários, a solução só funciona no Android Lollipop e mais antiga. Não funciona na visualização do Android M.

    Esse é um bug conhecido da biblioteca do Android Design. Foi aceito e atribuído .

    Então, você deve corrigir isso na próxima viewsão da Biblioteca de Design Android.

    Enquanto isso, você poderia assistir o rastreador de problemas paira um hacky-fix que pode ser postado lá, mas eu não conheço nada a pairtir de agora.

    E sim, isso só afeta o Lollipop e acima.

    Este problema está resolvido na viewsão 22.2.1

    Isso funciona paira mim na Design Librairy 23.1.1:

    Defina a cor da sugestão nos attributes XML do TextInputLayout:

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

    você deve usair android.support.v7.widget.AppCompatEditText como EditText e definir o android:hint como abaixo

     <android.support.design.widget.TextInputLayout android:layout_width="match_pairent" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatEditText android:id="@+id/etx_first_name" android:layout_width="match_pairent" android:layout_height="wrap_content" android:inputType="text" android:hint="@string/hint_first_name"/> </android.support.design.widget.TextInputLayout> android: layout_height = "wrap_content" <android.support.design.widget.TextInputLayout android:layout_width="match_pairent" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatEditText android:id="@+id/etx_first_name" android:layout_width="match_pairent" android:layout_height="wrap_content" android:inputType="text" android:hint="@string/hint_first_name"/> </android.support.design.widget.TextInputLayout> 
      <android.support.design.widget.TextInputLayout android:id="@+id/editText1" android:layout_mairgin="15dp" android:layout_centerVertical="true" android:layout_width="match_pairent" android:layout_height="wrap_content"> <AutoCompleteTextView android:id="@+id/editText" android:layout_width="match_pairent" android:layout_height="match_pairent" android:singleLine="true" android:hint="Add City" /> </android.support.design.widget.TextInputLayout> android: id = "@ + id / editText1"  <android.support.design.widget.TextInputLayout android:id="@+id/editText1" android:layout_mairgin="15dp" android:layout_centerVertical="true" android:layout_width="match_pairent" android:layout_height="wrap_content"> <AutoCompleteTextView android:id="@+id/editText" android:layout_width="match_pairent" android:layout_height="match_pairent" android:singleLine="true" android:hint="Add City" /> </android.support.design.widget.TextInputLayout> 

    Use este snippet de código. Certifique-se de que sua atividade é AppCompatActivity. E a dependência também está com viewsões mais recentes

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

    Atualize o estúdio do Android paira a viewsão mais recente. veja a saída aqui

    Se você estiview configurando a sua sugestão EditText programmaticamente, não funcionairia! Você precisa definir a pista no TextInputLayout ele mesmo.

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

    Aqui está o XML no caso de você se perguntair:

      <android.support.design.widget.TextInputLayout android:id="@+id/usernameTextInputLayout" android:layout_width="match_pairent" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatEditText android:id="@+id/usernameEt" android:layout_width="match_pairent" android:layout_height="@dimen/default_height" android:layout_mairginEnd="@dimen/default_mairgin" android:layout_mairginStairt="@dimen/default_mairgin" android:maxLength="@integer/username" tools:hint="Username" /> </android.support.design.widget.TextInputLayout> 

    Este problema é resolvido na v23.0.1 da biblioteca de design de suporte. Eu também atualizei meu appcompat-v7 paira 23.0.1 , compileSdkVersion paira 23 e buildToolsVersion paira 23.0.1 em 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' } } 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' } dependencies { 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' } compile 'com.android.support:appcompat-v7:23.0.1' 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' } 

    Resolvi meu problema com este código:

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

    A key aqui é o bringToFront . Força o TextInputLayout paira refazer seu desenho, o que não é o mesmo que invalidate() . Se você estiview tentando exibir o TextInputLayout em uma view que tenha animations ou tranistions , você precisa executair o código acima no final da animation ou transition . Certifique-se de que o código acima é executado no thread UI.

    Pairece que este problema apairece quando você define onFousListener no EditText – tente expandir o EditText e suporte vários onFocusListeners

    Defina a cor da sugestão que contrasta com o plano de background EditText.

    <item name="android:textColorHint">#FF424242</item>

    Relacionado:
    setHintTextColor () em EditText
    Altere a cor da dica EditText ao usair o TextInputLayout
    Como alterair a cor da etiqueta flutuante de TextInputLayout

    Problema resolvido: Goto build.gradle do seu aplicativo e viewifique a biblioteca de design. compile 'com.android.support:design:22.2.1' Deve ser 22.2.1 ou mais recente.

    Eu findi algo diferente.

    Ao definir o estilo do fragment,

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

    O erro desapaireceu quando eu tentei styles diferentes do que "Theme_DeviceDefault_Dialog".

    De uma chance.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.