![](/img/trans.png)
[英]how to set app:layout_columnWeight and app:layout_rowWeight to GridLayout's child programmatically
[英]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.