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ó.
- Cambiar el color del selector de contraseña de máscara
- Cómo cambiar el tamaño de la pista de TextInputLayout
- ¿Cómo se reduce el espacio entre la sugerencia editText flotante y el cuadro editText en Android?
- ¿Cómo obtengo espacios pequeños como separador de números en Android?
- Problema con la alineación mediante TextInputLayout y Spinner
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>
- Doble signo de exclamación en EditText setError cuando se utiliza en un campo de tipo de contraseña
- Programáticamente conjunto TextInputLayout Sugerencia Color de texto y color de etiqueta flotante
- Cómo hacer que TextInputLayout asigne rojo asterisco para los campos obligatorios
- TextInputLayout La sugerencia no flotará después de actualizar la biblioteca de asistencia de Google
- Android: TextInputLayout esconde drawableRight de un niño EditText
- Android TextInputLayout Cambiar contraseña no visible en la nueva biblioteca de soporte
- EditText añadido no es un TextInputEditText. Por favor, cambie a usar esa clase en su lugar
- Mantener TextInputLayout siempre enfocado o mantener la etiqueta siempre expandida
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); }
- Firebase / Android – Cargar usuario por UID
- "Recurso esperado de interpolador de tipo " y error "No se puede resolver símbolo" cuando genera un APK firmado