2009-09-11 15 views
47

Tengo un EditText y un Button colocados uno al lado del otro en la misma línea horizontal. Se ve muy bien, excepto cuando el usuario ingresa una gran cantidad de texto, el EditText se redimensiona, y el Button es aplastado.¿Cómo evito que EditText cambie el tamaño cuando el usuario está escribiendo?

Tengo EditText y Button establecidos en layout_width="wrap_content". "fill_parent" estropea 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 horizontal como en vertical, simplemente 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> 

Respuesta

85

Para usar EditarTexto

android:layout_width="0dp" - not required but preferred. 
android:layout_weight="1" 

Y para especificar botón dont android:layout_weight

+0

Gracias - ¡eso funcionó! ¿Qué significa "0dp" para el ancho? Que debería ocupar todo el espacio disponible? –

+1

sí, lo hará. La etiqueta layout_weight lo hará. – bhatt4982

+1

No olvides eliminar (si está presente) 'android: stretchColumns =" ​​x "' en tu 'TableLayout', donde" x "es la posición de la columna que contiene el' EditText' que no quieres que cambie de tamaño automáticamente. – Caumons

5

Dale un EditTextmaxWidth. Eso debería evitar que cambie el tamaño más allá del ancho que proporcionó. Además, si desea que esté dentro de 1 línea, establezca la configuración maxLines en 1 también.

+3

Gracias - Realmente no quiero codificar un anchoMax específica, ya que no sería el mismo para diferentes orientaciones o tamaños de pantalla. –

+1

+1 para el consejo sobre 'maxLines', realmente funciona. –

0

que tenía un problema similar, pero no pude conseguir lo anterior para trabajar. Lo que hice fue tomar el texto del cuadro EditText y luego formatearlo hasta el tamaño máximo que mi pantalla podría manejar. Cuando guardo esto en la base de datos, lo guardaré como texto de visualización y texto original.

Si vas to this page puse una explicación más larga.

2

sólo tiene que utilizar:

android:layout_width="fill_parent" 

tanto para EditarTexto y Button. También funcionará para EditText, pero es mejor tenerlo en ambos.

0

La forma correcta de hacerlo sería configurar el android: minWidth y android: maxWidth igual al ancho que desee. De esta forma, no tendrá que ajustar su diseño para usar el android: layout_weight.

Por ejemplo, si usted quiere que su EditarTexto para estar siempre 80 píxeles de densidad no importa cuántos caracteres se escribe en uso el siguiente:

android:minWidth="80dp" 
android:maxWidth="80dp" 
14

Lo que hago es en el onCreate para la actividad, medir la EditarTexto primero, luego aplique su maxWidth.

Puede hacerlo utilizando un código similar al siguiente:

EditText someedittext = (EditText)findViewById(R.id.sometextview); 
someedittext.setMaxWidth(someedittext.getWidth()); 
+1

¡Mejor solución! –

+0

Muchas gracias, hombre ... ninguna solución ha funcionado para mí, pero esta. – kgandroid

1

puede definir el tamaño de su EditarTexto ya que muestra por encima de

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 olvide definir su altura y ancho con wrap_content.

android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
0

Realicé 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ó perfectamente! ¡Muchas gracias!

1

enter image description here

es necesario agregar android: imeOptions para evitar este comportamiento.

Click here

Cuestiones relacionadas