2013-02-20 53 views
0

在我的應用程序中,我試圖創建一個滾動視圖,該視圖有3個大按鈕可以填滿整個屏幕。所以每個按鈕的大小都是屏幕的1/3。我怎樣才能做到這一點? 當我使用重量它不工作。滾動視圖內的權重

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/imageView2" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/header_layout" > 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" > 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center_horizontal" > 

      <ImageView 
       android:id="@+id/imageView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/main_btn_call" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center_horizontal" > 

      <ImageView 
       android:id="@+id/imageView4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/main_btn_unlock" /> 

     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow3" 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center_horizontal" > 

      <ImageView 
       android:id="@+id/imageView5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/main_btn_push" /> 

     </TableRow> 
    </TableLayout> 

</ScrollView> 
+0

爲什麼降點? – roiberg 2013-02-20 12:09:31

+0

作爲按鈕使用的圖像的確切大小是多少? – Harpreet 2013-02-21 06:07:06

+0

爲什麼尺寸變化?他們大約150dp。 – roiberg 2013-02-21 15:32:31

回答

1

您使用TableLayout這是一個LinearLayout與方向設置爲vertical - 這是所有罰款,到目前爲止,你對layout_height屬性使用權。

我看到的問題是,您在ScrollViewTableLayout中都使用wrap_content。重量值允許您的視圖展開以填充可用空間,但您的父母正在將內容包裝到0 + 0 + 0。如果您將父母元素的高度更改爲match_parent,則您的體重值將有空間擴大

+0

這不適用於我.. – roiberg 2013-02-20 10:45:32

+0

以什麼方式不起作用? – Graeme 2013-02-20 11:01:57

+0

它沒有改變任何東西。 – roiberg 2013-02-20 12:21:39

1

我meneged用代碼來做到這一點:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final ImageView incallImage = (ImageView) findViewById(R.id.incall_image); 
    final ImageView unlockImage = (ImageView) findViewById(R.id.unlock_image); 
    final ImageView pushImage = (ImageView) findViewById(R.id.push_image); 
    final ScrollView scrollViewMain = (ScrollView) findViewById(R.id.scroll_view_main); 
    scrollViewMain.post(new Runnable() { 
     @Override 
     public void run() { 
      scrollMainHeight = scrollViewMain.getHeight(); 
      LinearLayout.LayoutParams layoutParams = new  
        LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, scrollMainHeight/3); 
      incallImage.setLayoutParams(layoutParams); 
      unlockImage.setLayoutParams(layoutParams); 
      pushImage.setLayoutParams(layoutParams); 
     } 
    }); 
} 

如果有人找到辦法在XML做到這一點,將是巨大的! 謝謝!

4

唯一的變化是添加以下屬性在你的XML:

android:fillViewport="true" 

和滾動視圖的寬度和高度應該是match_parent

android:layout_width="match_parent" 
android:layout_height="match_parent"