2014-10-11 176 views
0

我正在嘗試使用Gridlayout。我想讓我的網格按鈕填滿屏幕,但是我遇到了一個問題。我注意到佈局本身填滿了屏幕,但他的孩子沒有填充佈局。這是輸出: http://i.imgur.com/TWNuTaj.png

我在互聯網上搜索了很多,但大多數的答案是提供將GridLayout替換爲LinearLayout或RelativeLayout但我必須留在GridLayout。 另外我不想給按鈕特定的大小,而是留在鏈接的圖片中的結構。GridLayout不填滿屏幕

這裏是我的代碼:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_margin="0.5dp" 
android:columnCount="4" 
android:orientation="horizontal" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:rowCount="5" 
tools:context=".Level1" > 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="0" 
    android:text="0" /> 

<Button 
    android:id="@+id/b_1" 
    android:layout_column="1" 
    android:layout_gravity="fill_horizontal" 
    android:layout_row="0" 
    android:text="1" /> 

<Button 
    android:id="@+id/b_2" 
    android:layout_column="2" 
    android:layout_gravity="fill" 
    android:layout_row="0" 
    android:layout_rowSpan="3" 
    android:text="2" /> 

<Button 
    android:id="@+id/b_3" 
    android:layout_column="3" 
    android:layout_row="0" 
    android:text="3" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="1" 
    android:text="0" /> 

<Button 
    android:id="@+id/b_4" 
    android:layout_column="1" 
    android:layout_gravity="fill_vertical" 
    android:layout_row="1" 
    android:layout_rowSpan="3" 
    android:text="4" /> 

<Button 
    android:id="@+id/b_6" 
    android:layout_column="3" 
    android:layout_gravity="fill_vertical" 
    android:layout_row="1" 
    android:layout_rowSpan="3" 
    android:text="6" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="2" 
    android:text="0" /> 

<Button 
    android:id="@+id/b_5" 
    android:layout_column="2" 
    android:layout_row="3" 
    android:text="5" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_column="0" 
    android:layout_row="3" 
    android:text="0" /> 

<Button 
    android:layout_height="0dp" 
    android:layout_column="0" 
    android:layout_columnSpan="4" 
    android:layout_row="4" 
    android:text="0" /> 

</GridLayout> 

回答

1

試試這個辦法,希望這將幫助你解決你的問題。

GridLayout:「GridLayout不提供對權重原則的支持,如權重定義一般,因此不可能配置GridLayout以在多行或多列之間以非平凡比例分配多餘空間...爲了完全控制行或列中多餘的空間分佈;使用LinearLayout子視圖來保存關聯單元組中的組件。「

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.20" 
      android:layout_height="0dp" 
      android:text="1" /> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.80" 
      android:layout_height="0dp" 
      android:text="4" /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.80" 
      android:layout_height="0dp" 
      android:text="2" /> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.20" 
      android:layout_height="0dp" 
      android:text="5" /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.20" 
      android:layout_height="0dp" 
      android:text="3" /> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_weight="0.80" 
      android:layout_height="0dp" 
      android:text="6" /> 
    </LinearLayout> 
</LinearLayout> 
+1

首先非常感謝你爲你的努力,我真的很感激它。但不幸的是,我說我必須使用GridLayout /: – user2983212 2014-10-11 09:50:49

+0

問題是如何使用Grid ... – SSG 2017-11-30 16:34:04

1

基於由@Haresh Chhelana以前的答案,它的工作像這樣只是分享我的解決辦法:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/bg_1"> 

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

     <!-- position 1 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_elsa" /> 

     <!-- position 3 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_daniel" /> 

    </LinearLayout> 

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

     <!-- position 2 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_anna" /> 

     <!-- position 4 --> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="0dp" 
      android:src="@drawable/bt_elmo" /> 

    </LinearLayout> 
</LinearLayout> 

sample 來源:https://github.com/eduardocerqueira/sing