创建一个网格,其单元格高度和宽度相对于屏幕尺寸

时间:2015-10-07 02:37:43

标签: android android-layout

我是Android编程的新手,我想制作一个表/网格(一般来说,不确定最好的布局还可以使用)。我希望桌子能够填满整个屏幕,但我想要为单元格设置可变大小的高度和宽度。例如,我希望第一列为显示宽度的1/3,第二列为显示宽度的2/3。同样,我希望有些单元格是屏幕高度的1/4,而其他单元格则是屏幕高度的1/2,等等。用于此的最佳布局是什么?我正在看GridLayout,LinearLayout和TableLayout。

的Tx!

2 个答案:

答案 0 :(得分:1)

您可以使用LinearLayout轻松完成。

将其layout_weight设为1。 然后,将第一个元素的layout_weight设置为0.3,将第二个元素的layout_weight设置为0.66。然后它将给你的第一个元素1/3或屏幕,其余的给你的第二个元素。

为每个元素添加{0}的width。然后根据你给元素的重量,你的元素会在屏幕上传播。

希望它有所帮助。

答案 1 :(得分:0)

有两种方法:

1)如果您知道所有商品的内容并且可以预先定义它们。

我会在LinearLayouts中使用LinearLayouts(父方向设置为垂直,子级设置为水平)。然后在父节点(例如3)上使用weight_sum,在子节点上使用layout_weight(例如2,1)。将children layout_width设置为0dp。

2)如果您尝试表示变量数据列表

这有点复杂,但您可能最好使用带有RecyclerViewGridLayoutManager,这样您就可以根据类型以编程方式设置项目的范围。

修改

#1的例子:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4">
            <TextView
                android:layout_width="0dp"
                android:layout_weight="3"
                android:layout_height="wrap_content" 
                android:background="#abc"/>
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:background="#cda"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4">
            <TextView
                android:layout_width="0dp"
                android:layout_weight="2"
                android:layout_height="wrap_content"
                android:background="#af0"/>
            <TextView
                android:layout_width="0dp"
                android:layout_weight="2"
                android:layout_height="wrap_content"
                android:background="#ffa"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4">
            <TextView
                android:layout_width="0dp"
                android:layout_weight="4"
                android:layout_height="wrap_content"
                android:background="#f00"/>
        </LinearLayout>
    </LinearLayout>
</ScrollView>