Esto parece sencillo, pero no sé cómo hacerlo. Tengo un diseño horizontal con un EditText y dos ImageButtons. Quiero que ImageButtons sea de un tamaño fijo y que EditText ocupe el espacio restante en el diseño. ¿Cómo se puede lograr esto?
<LinearLayout 
        android:orientation="horizontal"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
        <EditText 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </EditText>
        <ImageButton 
            android:src="@drawable/img1"
            android:layout_width="50dip" 
            android:layout_height="50dip">
        </ImageButton>
        <ImageButton 
            android:src="@drawable/img2"
            android:layout_width="50dip" 
            android:layout_height="50dip">
        </ImageButton>
</LinearLayout>
    
                    
                        android
                                android-layout
                                
                    
                    
                        ab11
fuente
                
                
            fuente

Si desea mantener el diseño igual (es decir, botones después del texto), use la
layout_weightpropiedad, junto confill_parent, así:<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"> </EditText> <ImageButton android:src="@drawable/img1" android:layout_width="50dip" android:layout_height="50dip"> </ImageButton> <ImageButton android:src="@drawable/img2" android:layout_width="50dip" android:layout_height="50dip"> </ImageButton> </LinearLayout>Dar el
EditText"peso" hace que se descubra el último y da prioridad a los botones. ¡Juega con los diferentes layout_weights y descubre cuánto te puedes divertir!fuente
Bueno:
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageButton android:id="@+id/button1" android:src="@drawable/img1" android:layout_width="50dip" android:layout_alignParentTop="true" android:layout_height="50dip"> </ImageButton> <ImageButton android:src="@drawable/img2" android:layout_width="50dip" android:layout_alignParentTop="true" android:layout_toRightOf="@id/button1" android:layout_height="50dip"> </ImageButton> <EditText android:layout_below="@id/button" android:layout_width="wrap_content" android:layout_height="fill_parent"> </EditText> </RelativeLayout>Los puntos clave del diseño son:
fill_parentmás adelante en el archivo, solo tiene en cuenta el espacio restante, no todo el espacio que podría ocupar si no había nada más allífill_parent(match_parenten 2.2+) para que ocupe el resto del espacio disponibleLo siento, no leí tu pregunta lo suficiente. El código anterior proporciona la respuesta si desea hacerlo de forma vertical. Para un diseño horizontal, el código publicado por @Sunil debería funcionar.
fuente
Use establecer
layout_widtholayout_heighten0dp(Por la orientación que desea llenar el espacio restante). Luego use ellayout_weightpara llenar el espacio restante.fuente