【问题标题】:GridLayout doesn't fill the screenGridLayout 没有填满屏幕
【发布时间】:2014-10-11 08:36:15
【问题描述】:

我正在尝试使用 Gridlayout。我希望我的网格按钮填满屏幕,但这样做有问题。我注意到布局本身填满了屏幕,但他的孩子没有填满布局。这是输出: http://i.imgur.com/TWNuTaj.png

我在互联网上搜索了很多,但大多数答案都提供将 GridLayout 替换为 LinearLayout 或 RelativeLayout 但我必须留在 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>

【问题讨论】:

    标签: android android-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>
    

    【讨论】:

    • 首先非常感谢你的努力,我真的很感激。但不幸的是就像我说的我必须使用GridLayout /:
    【解决方案2】:

    根据@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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多