2011-06-03 17 views
7

Me pregunto por qué sucede esto:Android LinearLayout llenar el ancho

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="fill_parent" 
    android:gravity="center_vertical" 
    android:layout_height="wrap_content" android:layout_gravity="top" 
    android:background="@drawable/gradient" android:focusable="true" 
    android:paddingTop="5dip" android:paddingBottom="5dip" 
    android:focusableInTouchMode="true"> 
     <EditText android:id="@+id/searchField" 
      android:layout_width="wrap_content" android:layout_height="fill_parent" 

      android:paddingTop="2dip" android:paddingBottom="2dip" 
      android:paddingLeft="10dip" android:paddingRight="10dip" 
      android:inputType="textVisiblePassword" android:radius="5dip" 
      android:layout_marginLeft="10dip" 
      android:background="@drawable/search_background" android:textColor="#000000" /> 

     <Button android:id="@+id/info" android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dip" 
      android:background="@drawable/info_btn" /> 
</LinearLayout> 

Si fijo "fill_parent" a layout_width de mi EditarTexto, se necesita todo el ancho de la matriz y desaparece el botón (supongo que se oculta debajo del EditText).

¿Alguien me puede explicar? Me gustaría obtener el botón toma su propio ancho y EditText toma el ancho restante.

Respuesta

21

Tu diciendo EditText a fill_parent, por lo tanto, llena la pantalla (todo el ancho, sin dejar espacio para el botón).

desea que el botón para envolver su contenido y la edición de texto para llenar el resto, puede hacerlo utilizando la propiedad layout_weight:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="top" 
android:gravity="center_vertical" 
android:paddingTop="5dip" 
android:paddingBottom="5dip" 
android:orientation="horizontal"> 
<EditText 
    android:id="@+id/searchField" 
    android:layout_width="0dip" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:layout_marginLeft="10dip" 
    android:paddingTop="2dip" 
    android:paddingBottom="2dip" 
    android:paddingLeft="10dip" 
    android:paddingRight="10dip" 
    android:radius="5dip" 
    android:inputType="textVisiblePassword" 
    android:textColor="#000000" /> 
<Button 
    android:id="@+id/info" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dip" 
    android:text="Blah" /> 
</LinearLayout> 

(Me tomó sus referencias dibujable a cabo para que sea genérica para otras personas)

en un lado de no hacer el código XML se ven bien una ordenada y más fácil de mantener en Eclipse:

ventana> Preferencias> XML> XML archivos> Editor

Ancho de línea 120

múltiples atributos divididos Tick

Alinear untick soporte de última

Preserve las etiquetas de espacio en blanco en PCDATA untick

Borrar todas las líneas en blanco untick

Insertar espacio en blanco antes del cierre MARCA

Haga clic en Aceptar

Luego puede arreglar sus archivos XML, cuando tiene un archivo XML abierto, presione CTRL + A y luego presione CTRL + MAYÚS + F para formatearlo bien.

+1

¡Muchas gracias! El atributo faltante "layout_weight" + el ancho "0dip" resolvió todo. – obo

+0

gracias a mí también. –

Cuestiones relacionadas