En Android, ¿cómo crear EditText de ancho fijo?

Me gustaría crear un EditText que sólo exceptúa números, tiene un máximo de 4 números, y nunca es más estrecho de lo que sería si se rellena con 4 números (no se encoge cuando está vacío, o tiene que expandirse para acomodar 4 números, por lo que es fijo.)

Los primeros 2 se realizan con: android: inputType = "number" y android: maxLength = "4".

¿Cómo puedo establecer la longitud mínima?

Un poco hackish , pero puede poner su EditText dentro de un FrameLayout junto con otro TextView con text="0000" y visibility=invisible.

FrameLayout Debe tener width=wrap_content y tu EditText tendrá width=match_parent .
Eso debería hacer que el ancho de la derecha siempre.

La ventaja de esto es, es 100% xml-side, sin código involucrado.

 <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="0000" android:visibility="invisible" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:maxLength="4" /> </FrameLayout> 

Un atributo raramente usado (AFAIK) de un EditText que usted puede utilizar es:

android:ems="4"

Esto hace que el EditText exactamente 4 ems de ancho. An em width es el ancho del carácter más ancho (M) en la fuente seleccionada.

En mi situación, necesitaba la vista para tener 6 dígitos de ancho. Android: ems hizo el campo demasiado amplio (ya que el M-carácter es más ancho que un dígito).

Terminé usando una indirecta transparente que dicta el ancho mínimo del campo. El siguiente ejemplo tiene seis dígitos de ancho.

 <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="000000" android:textColorHint="#00FFFFFF" android:maxLength="6" android:inputType="numberPassword" /> 

Esta solución es independiente de la fuente, espaciado entre letras y otras cosas que pueden variar. El textColorHint es un 0% de color blanco opaco, por lo que la sugerencia nunca debe ser visible para el usuario.

También puede intentar usar. . .

 android:ems="4" android:maxEms="4" android:layout_width="wrap_content" 

. . . Esto debe asegurar el ajuste más apretado posiblemente permitido por el estilo predeterminado android edittext

Para un control adicional con el relleno tanto a la izquierda como a la derecha, puede utilizar

 android:background="#ffffff" android:paddingLeft="0dp" android:paddingRight="0dp" 

Usar android: width = "XXX.Xdp"

Esto le permite establecer el ancho en píxeles de densidad que debería ser relativo a la densidad de pantalla. Intenté usar el ccsme basado para un campo 2 chars ancho, pero puesto que el ccsme requiere un int, 2 era demasiado pequeño y 3 era demasiado grande. Blech.

Hay una manera increíblemente fácil de hacer esto mediante programación.

 myEditText.setLayoutParams(new LinearLayout.LayoutParams(200, 50)); 

Esto establecería el ancho a 200 y la altura a 50!

Disfruta

No sé sobre la solución incorporada pero usted puede intentar comprobar pasivamente la longitud y levantar un diálogo con el mensaje de error en el momento de la sumisión.

El problema es que un widget de EditText puede perder el foco debido a una gran cantidad de acciones diferentes, como tocar otra vista sensible, botón de menú o (control de teclado del teclado duro) y así sucesivamente. La resticción de una longitud o tipo máximo de la entrada se puede hacer durante el proceso de atar (acepte el carácter si pasa el filtro o la longitud no se excede). Pero el foco perdido puede ser occour cada vez – incluso la sumisión no se termina todavía y la entrada a corto -> por lo tanto no hay build-in solución de la longitud mínima, porque la aplicación bloquearía en este punto la ejecución de otro acontecimiento o tarea. Por lo menos tiene que validar su entrada antes de pasar al siguiente paso de su flujo de trabajo.

Yo uso android: layout_width = "60dip" por lo que de acuerdo con mike fratto.

La solución de ems parece ser interesante también.

Phil

Puede configurar la alineación de otro modo cuando ponga caracteres de más de wditText de ancho que It's aumento ancho o el ancho de EditText. Por favor, establezca toLeftOf y toRightOf de la vista anterior para administrar estas cosas. Sólo una solución

  • ¿Cómo se puede cambiar el fondo y el color de la fuente de un Android EditText en Android durante la edición?
  • ExpandableListView con un EditText
  • Cómo establecer el estilo de diseño de material a deshabilitado EditText (android)?
  • Android EditText maxLength no funciona
  • Diseño personalizado EditText
  • Android: el teclado no aparece en la ventana flotante
  • EditText - Cómo establecer el texto predeterminado en android edittext
  • Android Problema: EditText, KeyListener y el botón físico anterior
  • Obtener el valor del atributo Hint de AttributeSet
  • En EditText, aparece un diálogo al hacer clic en un subconjunto específico de texto
  • Android: EditText - varias líneas y android: inputType
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.