2012-06-27 14 views
36

Quiero alinear dos botones con un diseño lineal, uno a la izquierda y otro a la derecha, como los botones siguiente y anterior en una galería de imágenes. Traté de alinearlos, pero no funciona.Alinee el diseño de dos botones hacia la izquierda y hacia la derecha en Android

XML código de diseño:

<?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="fill_parent" 
    android:orientation="vertical" 
    android:background="@android:color/white" 
    android:gravity="bottom" > 


    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/black" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="prev" 
      android:layout_alignParentRight="true" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="next" /> 

    </LinearLayout> 

</LinearLayout> 

salida real:

Resultados previstos:

¿Cómo puedo solucionarlo?

Respuesta

78

Utilice un RelativeLayout. Allí puede configurar android:layout_alignParentLeft y android:layout_alignParentRight. Esto debería funcionar para usted:

<?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="fill_parent" 
    android:orientation="vertical" 
    android:background="@android:color/white" 
    android:gravity="bottom" > 


    <RelativeLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/black" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="prev" 
      android:layout_alignParentLeft="true" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="next" 
      android:layout_alignParentRight="true"/> 

    </RelativeLayout> 

</LinearLayout> 
+0

si quiero poner un TextView en betw een estos botones. Este TextView debe estar centrado verticalmente con respecto a estos botones y debe ocupar el espacio restante completo en el centro de estos dos botones. Por favor, ayúdame. –

+0

@RobinPurbia, probablemente quiera enviar eso como una nueva pregunta ... –

+0

Gracias por la respuesta. Lo resolví usando el diseño lineal con la propiedad layout_weight. –

2

Utilice un RelativeLayout en lugar de un LinearLayout puede agregar las etiquetas android:layout_alignParentRight="true" y android:layout_alignParentLeft="true" en cada botón.

3

Algo como esto:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:gravity="right" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:text="Button" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/button1" 
      android:orientation="vertical" > 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 
     </LinearLayout> 
    </RelativeLayout> 

</LinearLayout> 

La idea es, para crear un RelativeLayout como contenedor y poner primero Button y luego se adhieren a la derecha de la vista padre. Después de eso, agregue otro botón dentro de LinearLayout y configure este LinearLayout a la izquierda del primer botón.

Aquí está el resultado.

enter image description here

+2

anidando en dos o más LinearLayouts es realmente malo para el rendimiento .. – SERPRO

+0

tienes razón. Estaba lanzando diseño mientras probaba mi código. – ariefbayu

5

Uso de disposición relativa en su LinearLayout;

También añadir android:layout_alignParentLeft="true" a "prev" Button

y android:layout_alignParentRight="true" a "siguiente" Button

<?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="fill_parent" 
    android:background="@android:color/white" 
    android:gravity="bottom" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/black" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" <---- ADD this prop 
      android:text="prev" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" <----- ADD this prop 
      android:text="next" /> 
    </RelativeLayout> 

</LinearLayout> 
+0

su LinearLayout interno no es de uso. también puedes eliminarlo. Simplemente agregue propiedades de color a RelativeLayout. –

3

ur xml diseño debe ser como se muestra a continuación

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="bottom" 
    android:background="#fff"> 


<RelativeLayout 
    android:id="@+id/relativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#000" 
    android:layout_gravity="bottom" > 
    <Button  
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:text="Pre" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:text="Next" /> 
</RelativeLayout> 
    </RelativeLayout> 
2

Puede utilizar RelativeLayout como esto:

<?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="fill_parent" 
    android:background="@android:color/white" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/black" 
     android:gravity="bottom" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:text="prev" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:text="next" /> 
    </RelativeLayout> 

</LinearLayout> 

(he usado gris en lugar de blanco para la captura de pantalla) LAYOUT

1

Use un FrameLayout y añadir el atributo layout_gravity en cada uno de los botones

3

con la disposición lineal

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Prev"/> 
     </LinearLayout> 


     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Next"/> 

</LinearLayout> 

Con relativa Diseño

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Prev" 
      android:layout_alignParentLeft="true"/> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Next" 
      android:layout_alignParentRight="true"/> 
</RelativeLayout> 
Cuestiones relacionadas