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); } 
  • Medir la altura del contenedor de errores TextInputLayout
  • Etiqueta flotante con dos editText
  • Sugerencia de float de AutoCompleteTextView
  • OnClick en el EditText dentro de TextInputLayout, dentro de un RecyclerView
  • TextInputLayout no se muestra cuando se agrega programativamente
  • Cómo cambiar el color de la etiqueta de TextinputLayout y edittext subrayar android
  • InputTextLayout método setError () en Android no funciona
  • ¿Puedo configurar los estilos personalizados globales de aplicaciones para los widgets de Android-support-design?
  • Deshabilitar / quitar texto de sugerencia de etiqueta flotante en TextInputLayout XML
  • ImeOption = "actionNext" no funciona en TextInputLayout.
  • No cambie el fondo de TextInputLayout en error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.