TextInputLayout no muestra la sugerencia de EditText antes de que el usuario se centre en ella

Estoy usando la recientemente lanzada Android Design Support Library para mostrar la etiqueta flotante con EditTexts. Pero estoy enfrentando el problema que la indirecta en el EditText no está demostrando cuando UI se procesa, pero veo la indirecta después de que me fijo en el EditTexts.

Mi diseño es el siguiente:

<?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> 

También he intentado fijar la indirecta para el TextInputLayout usando el método setHint pero ninguna suerte.

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

Actualizar:

Se trata de un error que se ha corregido en la versión 22.2.1 de la biblioteca.

Original Respuesta:

Como se mencionó por @shkschneider, este es un error conocido . Github usuario @ ljubisa987 recientemente publicado un Gist para una solución:

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

Como se señala en los comentarios, la solución sólo funciona en Android Lollipop y mayores. No funciona en la vista previa de Android M.

Es un error conocido de la biblioteca de diseño de Android. Ha sido aceptado y asignado .

Así que deberías arreglar esto en el próximo lanzamiento de la librería de Android Design.

Mientras tanto, podrías ver el rastreador de problemas para una corrección de hacky que podría publicarse allí, pero ahora no sé nada.

Y sí, sólo afectan a Lollipop y arriba.

Este problema se ha corregido en la versión 22.2.1

Usted debe utilizar android.support.v7.widget.AppCompatEditText como EditText y fijar android:hint como abajo

 <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> 

Esto funciona para mí en la Biblioteca de Diseño 23.1.1:

Establezca el color de la sugerencia en los atributos xml de TextInputLayout:

  <android.support.design.widget.TextInputLayout .... android:layout_margin="15dp" android:textColorHint="@color/hintColor" android:layout_width="match_parent" ... 
  <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> 

Utilice este fragmento de código. Asegúrese de que su actividad es AppCompatActivity. Y dependencia también están con las últimas versiones

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

Actualice el android studio a la última versión. Ver la salida aquí

Si está configurando la sugerencia EditText mediante programación, no funcionaría. Es necesario configurar la sugerencia en el TextInputLayout auto.

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

Aquí está el XML en caso de que se esté preguntando:

  <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> 

Este problema se resuelve en v23.0.1 de la biblioteca de diseño de soporte técnico. También actualizé mi appcompat-v7 a 23.0.1 , compileSdkVersion a 23 y buildToolsVersion a 23.0.1 en 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' } 

He resuelto mi problema con este código:

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

La clave aquí es el bringToFront . Obliga a TextInputLayout a rehacer su dibujo, que no es lo mismo que haciendo invalidate() . Si está intentando mostrar el TextInputLayout en una view que tiene animations o tranistions , necesita ejecutar el código anterior al final de la animation o transition . Sólo asegúrese de que el código anterior se ejecuta en el thread interfaz de usuario.

Parece que este problema aparece cuando se establece onFousListener en EditText – tratar de ampliar EditText y soportar múltiples onFocusListeners

Establece un color de pista que contraste con el fondo de EditarTexto.

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

Relacionado:
SetHintTextColor () en EditText
Cambiar color de sugerencia de EditText cuando se utiliza TextInputLayout
Cómo cambiar el color de etiqueta flotante de TextInputLayout

Problema resuelto: Vaya a build.gradle de ur app y verifique la biblioteca de diseño. Compile 'com.android.support:design:22.2.1' Debe ser 22.2.1 o más reciente.

Encontré algo diferente.

Al establecer el estilo del fragmento,

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

El error se había ido cuando probé diferentes estilos que "Theme_DeviceDefault_Dialog".

Darle una oportunidad.

  • RuntimeException mientras utiliza nuevo TextInputLayout de la biblioteca de diseño de soporte
  • La barra de herramientas no se despliega incluso después de proporcionar el indicador "app: layout_scrollFlags"
  • La animación TextInputLayout se superpone al texto cuando el texto se establece mediante programación
  • Barra de herramientas que no se muestra con desplazamiento para actualizar
  • Android NavigationEntrar la posición del icono equivocado en RTL
  • Android L - Botón de acción flotante (FAB)
  • Cómo agregar elementos de submenú a NavigationView programaticamente en lugar de menú xml
  • DrawableLeft se está superponiendo con una sugerencia con TextInputLayout android
  • Nuevo error de la biblioteca de diseño de Android con AppBarLayout y barra de herramientas
  • Android - capaz de utilizar AppCompatActivity sin la biblioteca de soporte
  • Biblioteca de soporte de diseño de materiales
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.