如何将GridLayout的子节点的宽度设置为相等的大小并使它们均匀分布?

时间:2018-05-01 22:22:45

标签: android android-layout

我有一个带有3个ImageViews的GridLayout作为孩子。 columnCount设置为3,它们应该水平均匀分布。这是XML:

    <GridLayout
        android:id="@+id/info_contact_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:columnCount="3"
        android:rowCount="1">

        <ImageView
            android:id="@+id/info_empresa_facebook_contact_id"
            android:layout_gravity="fill"
            android:layout_columnWeight="1"
            android:src="@drawable/ic_warning" />

        <ImageView
            android:id="@+id/info_empresa_whatsapp_contact_id"
            android:layout_gravity="fill"
            android:layout_columnWeight="1"
            android:src="@drawable/ic_warning" />

        <ImageView
            android:id="@+id/info_empresa_call_id"
            android:layout_gravity="fill"
            android:layout_columnWeight="1"
            android:src="@drawable/ic_warning" />

    </GridLayout>

而不是有3个宽度相等的图像,完全适合水平空间,这就是我得到的(第一张图片很大而其他图片无法看到):

enter image description here

如何均匀分布网格水平内容?有3列,每个图像一列,并且网格的宽度与父图像的宽度匹配。此外,如果我移除重量,它也不起作用。图像视图的大小无关紧要,它们应该调整到网格。

1 个答案:

答案 0 :(得分:1)

您发布的GridView只有一行。在这种情况下,我只会使用LinearLayout代替:

<LinearLayout
    android:id="@+id/info_contact_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/info_empresa_facebook_contact_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_warning" />

    <ImageView
        android:id="@+id/info_empresa_whatsapp_contact_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_warning" />

    <ImageView
        android:id="@+id/info_empresa_call_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_warning" />

</LinearLayout>