GridView等空间分布

时间:2015-10-24 23:23:02

标签: android xml gridview

我正在尝试使用GridView显示4条内容。在下面的代码中,这个内容只是一个ImageView,但稍后会添加一个textView。 我创建了一个2x2 GridView,我期望屏幕空间被所有4个网格单元平分,但这种情况并没有发生。如果设置为fill_parent,则单元格占据整个屏幕(如图像波纹管),如果设置为wrap_content,则单元格会在其中一个角落附近填充。如何仅使用XML布局文件使单元格均匀分布?

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:rowCount="2"
        android:orientation="horizontal"
        android:columnCount="2">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_rowSpan="1"
            android:layout_columnSpan="1"
            android:layout_column="0"
            android:layout_row="0">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageView2"
                android:src="@drawable/placeholder" />
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_columnSpan="1"
            android:layout_rowSpan="1"
            android:layout_column="1"
            android:layout_row="0">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageView"
                android:src="@drawable/placeholder" />
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_rowSpan="1"
            android:layout_columnSpan="1"
            android:layout_column="1"
            android:layout_row="1">

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

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_rowSpan="1"
            android:layout_columnSpan="1"
            android:layout_column="0"
            android:layout_row="1">

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

    </GridLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

这应该有效:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:rowCount="2"
        android:orientation="horizontal"
        android:columnCount="2">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_gravity="fill">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageView2"
                android:src="@drawable/placeholder" />
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_gravity="fill">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageView"
                android:src="@drawable/placeholder" />
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_gravity="fill">

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

        <LinearLayout
            android:orientation="horizontal"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_gravity="fill">

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

    </GridLayout>
</LinearLayout>

我已移除layout_heightlayout_widthlayout_rowSpanlayout_columnSpan,并将权重layout_gravity="fill"一起使用