2014-10-11 173 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