¿Cómo puedo evitar que un texto de edición se redimensione a sí mismo cuando el usuario está escribiendo?
-
05-07-2019 - |
Pregunta
Tengo un EditText
y un Button
establecidos uno al lado del otro en la misma línea horizontal. Se ve genial, excepto cuando el usuario ingresa una gran cantidad de texto, se cambia el tamaño del EditText
y el botón
se aplasta.
Tengo tanto EditText
como Button
configurado en layout_width = " wrap_content "
. " fill_parent "
confunde el diseño, y no quiero usar tamaños absolutos si no tengo que hacerlo, la forma en que ahora se ve genial tanto en el paisaje como en el retrato, simplemente no No quiero que el EditText
cambie de tamaño.
Mi diseño:
<TableLayout
android:id="@+id/homelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow>
<TextView
android:id="@+id/labelartist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Find artists:" />
</TableRow>
<TableRow>
<EditText
android:id="@+id/entryartist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="6"
android:background="@android:drawable/editbox_background"
android:editable="true"
android:padding="5px"
android:singleLine="true" />
<Button
android:id="@+id/okartist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_weight="1"
android:text="Search" />
</TableRow>
</TableLayout>
Solución
Para uso del texto editado
android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"
Y para el botón no especifique android:layout_weight
Otros consejos
Lo que hago es en el onCreate para la actividad, primero mida el texto de edición y luego aplique su maxWidth.
Puede hacerlo utilizando un código similar al siguiente:
EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
Dé EditText
un maxWidth
. Eso debería evitar que el tamaño cambie más allá del ancho que proporcionaste. Además, si desea que esté contenido dentro de 1 línea, establezca la configuración maxLines
en 1 también.
Solo usa:
android:layout_width="fill_parent"
para EditText y Button. También funcionará para EditText, pero es mejor tenerlo en ambos.
puede definir el tamaño de su texto de edición como se muestra arriba
android:minWidth="80dp"
android:maxWidth="80dp"
o
android:layout_width="60dp"
o
puede aplicar una imagen de fondo del tamaño que desee Pero no olvides definir su altura y anchura. con wrap_content.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Tuve un problema similar, pero no pude hacer que funcionara lo anterior. Lo que hice fue tomar el texto del cuadro EditarTexto y luego formatearlo hasta el tamaño máximo que mi pantalla pudiera manejar. Cuando guardo esto en la base de datos, lo guardaré como texto visualizado y texto original.
Si vas a esta página pongo una explicación más larga.
La forma correcta de hacer esto sería configurar android: minWidth y android: maxWidth igual al ancho que desee. De esta manera, no tendrá que ajustar su diseño para usar android: layout_weight.
Por ejemplo, si desea que su EditText siempre tenga 80 píxeles de densidad, sin importar cuántos caracteres escriba, use lo siguiente:
android:minWidth="80dp"
android:maxWidth="80dp"
Tuve la consulta exacta. Pero tenía un EditText y un botón uno al lado del otro en un diseño lineal. Probé android: layout_weight = " 1 " para EditText Android: layout_width = " 0dp " Y funcionó simplemente perfecto !! ¡Muchas gracias!
La solución elegida funciona, pero permítame agregar un poco de complemento:
si utiliza
android: layout_weight = " 0.15 "
(el valor no es importante)
entonces
android: layout_width = " 0dp "
si LinearLayout
es Horizontal
o
android: layout_height = " 0dp "
si LinearLayout
es vertical.