2016-04-09 97 views
5

Sono molto nuovo per lo sviluppo di app Android e sto cercando di ottenere il seguente layout di pulsanti in Android Studio.Android Studio come creare un LinearLayout a 2 colonne

[App design[1]

Ive cercato di utilizzare un layout lineare, ma non ho potuto farlo bene.

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:weightSum="1"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:background="#016eff" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_margin="10dp" 
     android:textColor="#ffffff" 
     android:layout_weight="0.48" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button2" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:background="#016eff" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_margin="10dp" 
     android:textColor="#ffffff" 
     android:layout_weight="0.48" /> 
</LinearLayout> 

Il problema con questo è, se ho aggiunto un altro pulsante per il layout lineare, poi appena vengano schiacciati insieme, invece di aggiungere il pulsante alla riga successiva.

Qualcuno può mostrarmi per far sì che il mio LinearLayout abbia solo 2 widget su ogni riga o fornire un'altra correzione.

Qualsiasi aiuto sarà molto apprezzato grazie :-)

+1

provate con tablelayout invece di linearlayout – Vishwa

+0

Ok, andateci e provatelo ora. –

+0

@Vishwa Grazie mille, sono riuscito a farlo funzionare! –

risposta

8

LinearLayout va bene per quello che stai cercando di raggiungere. Si prega di guardare gli attributi di peso e orientamento di un oggetto LinearLayout. Linear Layout

E ciò che si vuole, si può fare per esempio come questo:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:gravity="center"> 

     <TextView 
      android:text="Whatever You Want Here" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:textSize="36sp"/> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 1" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 2" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 3" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 4" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 5" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 6" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center"> 

      <Button 
       android:text="Button 7" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 

      <Button 
       android:text="Button 8" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center"/> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

uscita:

Linear Layout 2 Columns

E attenzione, perché la nidificazione troppi peso attributi può avere qualche negativi problemi di prestazione.

1

ragazzi Va bene, sono riuscito a trovare una soluzione grazie al commento di Vishwa. Tuttavia, in realtà non ho trovato un modo per fare in modo che LinearLayout abbia 2 colonne.

Invece, ho cambiato in un TableLayout e ho allungato le colonne 0 & 1 per prendere l'intero schermo. Ecco come è finito il mio XML. (Ha roba in più in esso per ottenere il mio design)

<TableLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:stretchColumns="0,1"> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Events" 
      android:id="@+id/eventButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Absentee" 
      android:id="@+id/absenteeButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Contacts" 
      android:id="@+id/contactsButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Alerts" 
      android:id="@+id/alertButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Links" 
      android:id="@+id/linksButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Newsletter" 
      android:id="@+id/newsletterButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textSize="40px" 
      android:textStyle="normal" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:paddingBottom="8dp" 
     android:layout_height="match_parent" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Kamar" 
      android:id="@+id/kamarButton" 
      android:layout_column="0" 
      android:background="#016eff" 
      android:layout_marginRight="8dp" 
      android:textColor="#ffffff" 
      android:textStyle="normal" 
      android:textSize="40px" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="News" 
      android:id="@+id/newsButton" 
      android:layout_column="1" 
      android:background="#016eff" 
      android:textColor="#ffffff" 
      android:textSize="40px" 
      android:textStyle="normal" /> 
    </TableRow> 

</TableLayout> 
1

Mettete semplicemente un LinearLayout separato con android:orientation="horizontal" attorno a ciascuna coppia di pulsanti. Quindi il genitore LinearLayaout dovrebbe avere android:orientation="vertical" e il weightsum dovrebbe essere in ogni LinearLayout orizzontale.

+0

Grazie per l'aiuto, è bello avere più soluzioni a un problema. –

+1

Trovo che l'utilizzo di LinearLayouts annidati offra una maggiore flessibilità rispetto a un TableLayout, ad esempio quando è necessario disporre di una riga di pulsanti per l'allineamento in modo diverso o per avere una riga con un numero diverso di layout. – Christine