Cómo hacer que el mensaje de error en TextInputLayout aparezca en el centro

Actualmente se ve como en adjunto con este diseño:

<android.support.design.widget.TextInputLayout android:id="@+id/layoutCurrentPW" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" app:errorEnabled="true"> 

¿Cómo configurar el mensaje de error "contraseña debe tener al menos 8 caracteres" para centrar la gravedad?
He intentado con android: gravedad = "centro", pero que no funcionó.

Introduzca aquí la descripción de la imagen

EDITAR
Diseño que incluye EditText:

 <android.support.design.widget.TextInputLayout android:id="@+id/layoutCurrentPW" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" app:errorEnabled="true"> <EditText android:id="@+id/editTextCurrentPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:gravity="center" android:hint="@string/current_password" android:inputType="textPassword" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/black" /> </android.support.design.widget.TextInputLayout> 

Quería saber si hay alguna manera de manejarlo desde el marco … parece que no.

Pero el trabajo de TextInputLayout es:
– se mostrará una sugerencia en la parte superior de EditText cuando el usuario la toque.
– Los mensajes de error se mostrarán justo debajo de TextInputLayout y alineados para comenzar.

Tuve 40dp de left_margin a mi EditText debido a que la desalineación entre la indirecta y el mensaje de error. Así que por ahora, he eliminado left_margin 40dp de EditText y aplicado lo mismo a TextInputLayout por lo que ahora parece bien.

Lección aprendida 🙂 es si hay márgenes que deben aplicarse a EditText, mejor si es posible, se puede aplicar a TextInputLayout para mantener la sugerencia y los mensajes de error para ser colocados correctamente.

Aquí una solución que siempre centra el mensaje de error no importa cuán grande es su TextInputLayout.

Haces una clase propia que hereda de TextInputLayout . A continuación, sustituya el método ShowError (texto de cadena, icono Dibujable). Si se llama al error, centra el textView con el error.

  public class TextInputLayout_Center : TextInputLayout { public override void ShowError(string text, Android.Graphics.Drawables.Drawable icon) { base.ShowError(text, icon); centerErrorMessage(this); } void centerErrorMessage(ViewGroup view) { for (int i = 0; i < view.ChildCount; i++) { View v = view.GetChildAt(i); if (v.GetType() == typeof(TextView)) { v.LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.MatchParent, v.LayoutParameters.Height); ((TextView)v).Gravity = GravityFlags.CenterHorizontal; ((TextView)v).TextAlignment = TextAlignment.Center; } if (v is ViewGroup) { centerErrorMessage((ViewGroup)v); } } } } 

Lo logré estableciendo el margen inicial para la vista de error. A continuación, puede ver mi versión de setError método setError del componente TextInputLayout .

 @Override public void setError(@Nullable CharSequence errorText) { // allow android component to create error view if (errorText == null) { return; } super.setError(errorText); // find this error view and calculate start margin to make it look like centered final TextView errorTextInput = (TextView) findViewById(R.id.textinput_error); errorTextInput.measure(0, 0); int errorWidth = errorTextInput.getMeasuredWidth(); int layoutWidth = getWidth(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) errorTextInput.getLayoutParams(); params.setMarginStart((layoutWidth - errorWidth) / 2); errorTextInput.setLayoutParams(params); } 
  • Cómo cambiar la posición de etiqueta flotante de TextInputLayout en android
  • ¿Cómo se cambia el color de línea / campo de EditText en TextInputLayout (cuando se llama a setError)?
  • TextInputLayout etiqueta a achor encima de la izquierda dibujable de un EditText
  • Error al inflacionar la clase EditText al crear TextInputLayout en Android 4.4.2:
  • Reaccione Nativo. ¿Cómo puedo mantener el foco en una entrada de texto cuando la página vuelve a aparecer en la marca del temporizador
  • El texto de error en TextInputLayout está cubierto por el teclado
  • ImeOption = "actionNext" no funciona en TextInputLayout.
  • TextInputLayout establecer error sin mensaje?
  • Alinear la línea de base con un TextView que se envuelve dentro de un TextInputLayout
  • OnClick en el EditText dentro de TextInputLayout, dentro de un RecyclerView
  • TextInputLayout no se muestra cuando se agrega programativamente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.