¿Cómo puedo evitar que un texto de edición se redimensione a sí mismo cuando el usuario está escribiendo?

StackOverflow https://stackoverflow.com/questions/1408781

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>
¿Fue útil?

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());

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.

 ingrese la descripción de la imagen aquí

Es necesario agregar android: imeOptions para evitar este comportamiento.

Haga clic aquí

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top