我是Android编程的新手,我想制作一个表/网格(一般来说,不确定最好的布局还可以使用)。我希望桌子能够填满整个屏幕,但我想要为单元格设置可变大小的高度和宽度。例如,我希望第一列为显示宽度的1/3,第二列为显示宽度的2/3。同样,我希望有些单元格是屏幕高度的1/4,而其他单元格则是屏幕高度的1/2,等等。用于此的最佳布局是什么?我正在看GridLayout,LinearLayout和TableLayout。
的Tx!
答案 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)如果您尝试表示变量数据列表
这有点复杂,但您可能最好使用带有RecyclerView的GridLayoutManager,这样您就可以根据类型以编程方式设置项目的范围。
修改强>
#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>