2013-06-04 11 views
5

Ho un layout come nella calcolatrice, 4 pulsanti in ogni riga, con alcune 5 righe. Ho creato queste righe utilizzando LinearLayout. Sono riuscito a riempire completamente la larghezza di ogni riga utilizzando android:layout_weight="1" in ciascun pulsante in LinearLayout. Ma non so come riempire lo spazio verticale in questo modo. Dopo cinque righe c'è spazio rimanente nella parte inferiore per schermi XDPI Normal (Nexus 4)Come span ugualmente per pulsanti/layout in Android?

<LinearLayout 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/entry"> 

    <Button 
      android:id="@+id/seven" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:text="7" 
      android:textColor="@color/Blue_ICS" 
      android:textSize="@dimen/button_text_size" 
      /> 

    <Button 
      android:id="@+id/eight" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:text="8" 
      android:textColor="@color/Blue_ICS" 

      android:textSize="@dimen/button_text_size"/> 

    <Button 
      android:id="@+id/nine" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:text="9" 

      android:textColor="@color/Blue_ICS" 
      android:textSize="@dimen/button_text_size"/> 

    <Button 
      android:id="@+id/plus" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:text="+" 
      android:textColor="@color/Blue_ICS" 
      android:textSize="@dimen/button_text_size"/> 
</LinearLayout> 

La disposizione è troppo lungo così condivido qui codice solo prima riga, righe rimanenti sono troppo stessa.

+0

vuoi riempire le tue file con altezze uguali? –

+0

Hai provato a cambiare l'attributo di altezza 'LinearLayout' ?:' android: layout_height = "match_parent" ' –

+0

check out [questo link] (http://stackoverflow.com/a/8105131/2345913) – CRUSADER

risposta

7

si dovrebbe usare un TableLayout, in sostituzione di tutta la tua LinearLayout per TableRow. L'attributo stretchColumns consente di creare tutte le colonne con la stessa larghezza senza dover utilizzare il peso. In questo modo è possibile utilizzare il peso per gestire l'altezza del TableRow.

Nell'esempio seguente ho anche aggiunto dello spazio (LinearLayout vuoto) per mostrare i risultati, come una schermata della calcolatrice. Spero che questo sia quello che stai cercando! (Dovrete modificare gli ID)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/outerLayout" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<LinearLayout 
    android:id="@+id/screenLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="150dp" 
    android:orientation="vertical"></LinearLayout> 

<TableLayout 
    android:id="@+id/myLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/screenLayout" 
    android:stretchColumns="*" > 

    <TableRow 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <Button 
      android:id="@+id/seven" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="7" /> 

     <Button 
      android:id="@+id/eight" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="8" /> 

     <Button 
      android:id="@+id/nine" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="9" /> 

     <Button 
      android:id="@+id/plus" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="+" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <Button 
      android:id="@+id/seven" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="4" /> 

     <Button 
      android:id="@+id/eight" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="5" /> 

     <Button 
      android:id="@+id/nine" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="6" /> 

     <Button 
      android:id="@+id/plus" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="-" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <Button 
      android:id="@+id/seven" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="1" /> 

     <Button 
      android:id="@+id/eight" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="2" /> 

     <Button 
      android:id="@+id/nine" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="3" /> 

     <Button 
      android:id="@+id/plus" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="*" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <Button 
      android:id="@+id/seven" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="0" /> 

     <Button 
      android:id="@+id/eight" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="," /> 

     <Button 
      android:id="@+id/nine" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="/" /> 

     <Button 
      android:id="@+id/plus" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:text="=" /> 
    </TableRow> 
</TableLayout> 

</RelativeLayout> 

Risultato:

enter image description here

+0

Sì, questo aiuterà a coprire l'intero layout in modo uguale. Grazie – Vins

+0

Felice di aiutare! :) –

2

Se il genitore è un LinearLayout, è possibile anche utilizzare lo android:layout_weight="1" sulle righe.

<!--parent--> 
<LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical"> 

    <include 
     android:layout="@layout/myrow" 
     android:layout_height="0dp" 
     android:layout_width="match_parent" 
     android:layout_weight="1"/> 

    <include 
     android:layout="@layout/myrow" 
     android:layout_height="0dp" 
     android:layout_width="match_parent" 
     android:layout_weight="1"/> 

    <include 
     android:layout="@layout/myrow" 
     android:layout_height="0dp" 
     android:layout_width="match_parent" 
     android:layout_weight="1"/> 

    <include 
     android:layout="@layout/myrow" 
     android:layout_height="0dp" 
     android:layout_width="match_parent" 
     android:layout_weight="1"/> 

    <include 
     android:layout="@layout/myrow" 
     android:layout_height="0dp" 
     android:layout_width="match_parent" 
     android:layout_weight="1"/> 


</LinearLayout> 

non prova, ma dovrebbe funzionare.

Spero che questo aiuti

0

provare questo:

<LinearLayout 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/first_row" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 
     ... 
    </LinearLayout> 
    ... 

e così via. Wrap tutti coloro in Layout lineare con orientamento verticale

0

È possibile provare le seguenti ... (pseudocodice) :(Hope u capire la logica ... Questo funziona .. si estende il pulsante in qualsiasi densità di schermo)

 <linearlayout=Outer 
      horizontal 
      weightSum=5> 
       <sub linearLayout=innerRow1 
        vertical 
        weightSum=1> 
        <enter all the buttons with weight as ".25"> 
       </sub innerRow1> 
       <sub linearLayout=innerRow2 
        vertical 
        weightSum=1> 
        <enter all the buttons with weight as ".25"> 
       </sub innerRow2> 
       <sub linearLayout=innerRow3 
        vertical 
        weightSum=1> 
        <enter all the buttons with weight as ".25"> 
       </sub innerRow3> 
      <sub linearLayout=innerRow4 
        vertical 
        weightSum=1> 
        <enter all the buttons with weight as ".25"> 
       </sub innerRow4> 
      <sub linearLayout=innerRow5 
        vertical 
        weightSum=1> 
        <enter all the buttons with weight as ".25"> 
       </sub innerRow5> 
+0

Il mio layout radice è RelativeLayout, quindi non posso usare la somma di peso penso – Vins

+0

Puoi provare con layout_weight o puoi racchiudere questo layout lineare in RelativeLayout @vins ... – amalBit