基本上,我有一个需要拆分为 2x4 网格的视图,每个部分的大小相等(即每行将是屏幕高度的 25%,每列将是屏幕宽度的 50%)。
我的方法是使用水平 LinearLayout 和两个权重为 0.5 的内部 LinearLayouts,然后在每个 LinearLayouts 中将子项的权重设置为 0.25,以便每个子项占屏幕的 25%。
尽管这似乎可行,但这显然对性能非常不利(请参阅此线程,了解为什么嵌套权重对性能不利?替代方案?)
有没有其他方法可以实现这一目标?我环顾四周,但找不到纯 XML 解决方案。
请参阅下面的代码示例,了解我如何设置 LinearLayouts 及其子项
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:weightSum="1.0"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.5"
android:weightSum="1.0">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.5"
android:weightSum="1.0">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:src="@drawable/example"
android:layout_gravity="center_horizontal"
android:layout_weight="0.25"
/>
</LinearLayout>
</LinearLayout>