2012-12-14 70 views
0

我有一個表格佈局,其中有3個按鈕縮放以填充屏幕底部。我想用scrollview替換這些按鈕以適應更多的按鈕。我添加了一個滾動視圖並添加了按鈕,但是它們的寬度已減小到寬度的四分之一,四個按鈕寬。滾動視圖工作正常,但我無法縮放它或按鈕,並且在較大的顯示器上,按鈕在用於縮放的位置仍然很小。Droid:水平滾動視圖中的大小按鈕

這裏是我行的代碼:

<TableRow 
     android:id="@+id/TableRow5" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <HorizontalScrollView 
      android:id="@+id/horizontalScrollView1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_span="3" 
      android:layout_weight="1" 
      > 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:orientation="horizontal" 
       android:weightSum="6" > 

       <Button 
        android:id="@+id/button_low" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_margin="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/sgbutton" 
        android:onClick="preLaunch" 
        android:padding="5dp" 
        android:tag="1" 
        android:text="@string/button_label_low" 
        android:textSize="16dp" 
        android:textStyle="normal" /> 

       <Button 
        android:id="@+id/button_high" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_margin="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/sgbutton" 
        android:onClick="preLaunch" 
        android:padding="5dp" 
        android:tag="2" 
        android:text="@string/button_label_high" 
        android:textSize="16dp" 
        android:textStyle="normal" /> 

       <Button 
        android:id="@+id/button_practice" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_margin="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/sgbutton" 
        android:onClick="preLaunch" 
        android:padding="5dp" 
        android:tag="3" 
        android:text="practice" 
        android:textSize="16dp" 
        android:textStyle="normal" /> 

      <Button 
       android:id="@+id/Button012" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_margin="5dp" 
       android:layout_weight="1" 
       android:background="@drawable/sgbutton" 
       android:padding="5dp" 
       android:tag="1" 
       android:text="@string/button_label_low" 
       android:textSize="16dp" 
       android:textStyle="normal" /> 

      <Button 
       android:id="@+id/Button011" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_margin="5dp" 
       android:layout_weight="1" 
       android:background="@drawable/sgbutton" 
       android:padding="5dp" 
       android:tag="2" 
       android:text="@string/button_label_high" 
       android:textSize="16dp" 
       android:textStyle="normal" /> 

      <Button 
       android:id="@+id/Button013" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_margin="5dp" 
       android:layout_weight="1" 
       android:background="@drawable/sgbutton" 
       android:padding="5dp" 
       android:tag="3" 
       android:text="practice" 
       android:textSize="16dp" 
       android:textStyle="normal" /> 
      </LinearLayout> 
     </HorizontalScrollView> 
    </TableRow> 

如何獲得的按鈕擴展到顯示寬度的1/3的?

+0

嘗試將每個按鈕的'layout_width'更改爲'「0dp」',這樣它們在權重上就會更好。另外,嘗試改變你的'weightSum'到3,保持每個按鈕的重量1. – Geobits

+0

好主意,沒有工作。 ;) –

回答

0

這有點難以解釋。

在測量兒童視圖時,LinearLayout將首先嚐試將其空間分配給子視,取決於子視圖的大小,然後根據其重量劃分其餘空間。

在劃分空間之前,父LinearLayout應該知道它的寬度。但在Horizo​​ntalScrollView中,LinearLayout不知道它應該有多大,它首先必須測量其子視圖以獲取總和大小。在這種情況下,重量無法工作,因爲沒有剩餘空間。 LinearLayout的寬度等於按鈕的寬度總和。

我想你必須在你的代碼中設置寬度。將每個按鈕的寬度設置爲screenWidth/3.

+0

在我看來,Android的xml用戶界面的實現嚴重缺乏。爲什麼沒有尺寸的百分比選項?如果我可以將按鈕設置爲屏幕寬度的33%,並將視圖設置爲100%,則很容易。相反,我必須在代碼中做到這一點,打破獨立xml接口的想法。如果沒有其他解決方案出現,我會將其標記爲答案。謝謝。 –

+0

您可以使用weight作爲百分比,但它與父視圖(LinearLayout)相對。您可以使用layout_width =「match_parent」將父視圖的寬度設置爲100%的屏幕寬度,並且只有3個按鈕時纔有效。現在你想要有6個按鈕,這意味着你希望父視圖的寬度爲200%的屏幕寬度,這是不支持的。 – faylon