android - 在 Android 中创建类似网格的布局

标签 android xml android-layout grid-layout android-layout-weight

基本上,我有一个 View 需要拆分为 2x4 网格,每个部分的大小相等(即每行占屏幕高度的 25%,每列占屏幕宽度的 50% ).

我的方法是使用带有两个权重为 0.5 的内部 LinearLayout 的水平 LinearLayout,然后在每个 LinearLayout 中将子项的权重设置为 0.25,以便每个子项占据屏幕的 25%。

虽然这似乎可行,但这显然对性能非常不利(请参阅此线程以了解 Why are nested weights bad for performance? Alternatives? 的原因)

是否有任何替代方案可以实现这一目标?我环顾四周,但找不到解决此问题的纯 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>

最佳答案

您可能想提供 GridLayout旋转。

还有一个 library这使其适用于 1.6+ 设备。

关于android - 在 Android 中创建类似网格的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484365/

相关文章:

java 查找 xml 属性的值

ios - 如何在 iOS 中将 NSData 变量转换为 NSInteger 变量

android - 如何制作可滚动的 ListView 但不填满整个屏幕?

android - 我在哪里可以找到 Android Studio 2.2 Preview 1 中的新布局检查器

android - opengl es yuv 到 rgb 转换仅显示绿色和粉红色

c# - 第二个 await 没有在方法中返回正确的值

java - 发现多个文件的操作系统独立路径为 'README.md'

android - TWA 和外部链接

c# - 在 C# 中将字符串值格式化为 $xx.xx 格式

android - 如何获取布局或其至少一个子元素是否在android中溢出