簡體   English   中英

Android GridLayout:layout_rowWeight 沒有平均划分項目寬度

[英]Android GridLayout: layout_rowWeight not dividing item width equally

我正在為我的項目使用GridLayout ,我總共有 4 * 2 個項目。
我為每個項目使用layout_rowWeight="1"layout_columnWeight="1"
但是,該項目並未平均分配。 前三項較大,最后一項較小,如下所示:
在此處輸入圖像描述

這是我的布局 xml:

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

    <LinearLayout
        android:id="@+id/qrcode_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="21dp"
            android:layout_height="21dp"
            android:src="@drawable/ic_qrcode" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12dp"
            android:text="@string/qrcode_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/grade_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="20dp"
            android:layout_height="23dp"
            android:src="@drawable/ic_grade" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="11dp"
            android:text="@string/grade_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/study_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="19dp"
            android:layout_height="24dp"
            android:src="@drawable/ic_study" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="11dp"
            android:text="@string/study_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/map_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/ic_map" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12dp"
            android:text="@string/map_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/calendar_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:src="@drawable/ic_calendar" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="11dp"
            android:text="@string/calendar_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/network_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="28dp"
            android:layout_height="21dp"
            android:src="@drawable/ic_internet" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12dp"
            android:text="@string/network_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/contact_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="23dp"
            android:layout_height="20dp"
            android:src="@drawable/ic_contact" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="13dp"
            android:text="@string/contact_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/more_item"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1">

        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/ic_more" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12dp"
            android:text="@string/more_item"
            android:textColor="#363636"
            android:textSize="12sp" />

    </LinearLayout>

</GridLayout>

發生這種情況是因為您沒有為包裝器 LinearLayouts 指定寬度和高度屬性。

如果您使用 layout_rowWeight 和/或 layout_columnWeight,您還應該使用 layout_width 和 layout_height 屬性來均勻分布行和列。

嘗試將這些行添加到您的每個 LinearLayouts:

android:layout_width="0dp"
android:layout_height="0dp"

添加這些行后,行和列將根據 GridLayout 的寬度和高度均勻分布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM