转载:http://android.blog.51cto.com/268543/314262
TableLayout 和我们平时在网页上见到的Table 有所不同,TableLayout 没有边框的,它是由多个TableRow 对象组成,每个TableRow 可以有0 个或多个单元格,每个单元格就是一个View 。这些TableRow ,单元格不能设置layout_width, 宽度默认是fill_parent 的,只有高度layout_height 可以自定义,默认是wrap_content 。
单元格可以为empty ,并且通过android:layout_column 可以设置index 值实现跳开某些单 元格。在TableRow 之间,添加View, 设置layout_height 以及背景色,就可以实现一条间隔线。 android:layout_span 可以设置合并几个单元格 :
1. <?xml version="1.0" encoding="utf-8"?>
2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:layout_width="fill_parent"
4. android:layout_height="fill_parent">
5.
6. <TableRow>
7. <TextView
8. android:text="column1"
9. android:padding="3dip" />
10. <TextView
11. android:text="column2"
12. android:padding="3dip" />
13. <TextView
14. android:text="column3"
15. android:padding="3dip" />
16. </TableRow>
17.
18. <TableRow>
19. <TextView
20. android:text="column11"
21. android:visibility= "invisible"/> //cell 不见了
22. <TextView
23. android:text=" 左边的invisible"
24. android:gravity="right"
25. android:padding="3dip" />
26. <Button
27. android:id="@+id/go"
28. android:text="go"
29. android:padding="3dip" />
30. <Button
31. android:text="cancel"
32. android:padding="3dip" />
33. </TableRow>
34.
35. <View // 间隔线
36. android:layout_height= "2dip"
37. android:background= "#F00" />
38.
39. <TableRow>
40. <TextView
41. android:text=" 右边的cell empty" />
42. <TextView
43. android:layout_column= "2"
44. android:text=" 跳开empty cell"
45. android:padding="3dip" />
46. </TableRow>
47.
48. <TableRow>
49. <TextView
50. android:text=" 合并3 个单元格"
51. android:layout_span= "3"
52. android:gravity="center_horizontal"
53. android:background="#FFC0C0C0"
54. android:textColor="#f00"
55. android:padding="3dip" />
56. </TableRow>
57. </TableLayout>
没有设置收缩/ 伸展效果
注意,原来没有添加 android:padding="3dip" 的,发现那些column 会凑在一起的,没有空白间隔!明显看到,那个cancel 按钮被挤到几乎看不见了!这时候需要使用 android:shrinkColumns=" 可收缩的column" ,android:stretchColumns=" 可伸展的column" 。
android:shrinkColumns 和android:stretchColumns 的值都是以0 开始的index ,但必须是string 值,即用"1,2,5" 来表示。可以用"*" 来表示all columns 。而且同一column 可以同时设置为shrinkable 和stretchable 。
如果使用TableLayout 类的setColumnShrinkable/setColumnStretchable (int columnIndex, boolean isShrinkable) 就麻烦些了,需要一个一个column 来设置。也可以使用TableLayout 的setShrinkAllColumns/setStretchAllColumns 来设置all columns 。
判断这些column 是否shrinkable 或stretchable ,可以调用isColumnShrinkable/isColumnStretchable(int columnIndex) ,isShrinkAllColumns()/isStretchAllColumns() 。
1. <?xml version="1.0" encoding="utf-8"?>
2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:layout_width="fill_parent"
4. android:layout_height="fill_parent"
5. android:shrinkColumns= "0" > // 设置第一个column 可收缩
6.
7. <TableRow>
8. <TextView
9. android:text="column1"
10. android:padding="3dip" />
11. <TextView
12. android:text="column2"
13. android:padding="3dip" />
14. <TextView
15. android:text="column3"
16. android:padding="3dip" />
17. </TableRow>
18.
19. <TableRow>
20. <TextView
21. android:text="column11"
22. android:visibility="invisible"/>
23. <TextView
24. android:text=" 左边的invisible"
25. android:gravity="right"
26. android:padding="3dip" />
27. <Button
28. android:id="@+id/go2"
29. android:text="go2"
30. android:padding="3dip" />
31. <Button
32. android:text="cancel"
33. android:padding="3dip" />
34. </TableRow>
35.
36. <View
37. android:layout_height="2dip"
38. android:background="#F00" />
39.
40. <TableRow>
41. <TextView
42. android:text=" 右边的cell empty" />
43. <TextView
44. android:layout_column="2"
45. android:text=" 跳开empty cell"
46. android:padding="3dip" />
47. <TextView
48. android:text="123456789"
49. android:padding="3dip" />
50. </TableRow>
51. </TableLayout>
可收缩column 效果
现在可以看到第一个column 为了让第4 个column 完整显示,而收缩得内容分为几行显示!
而可伸展column 的效果就是在其他column 可以完整显示时,该column 就会伸展,占最多空间:
1. <?xml version="1.0" encoding="utf-8"?>
2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:layout_width="fill_parent"
4. android:layout_height="fill_parent"
5. android:stretchColumns= "1"> // 设置第二个column 可伸展
6.
7. <TableRow>
8. <TextView
9. android:text="column1"
10. android:padding="3dip" />
11. <TextView
12. android:text="column2"
13. android:gravity="right"
14. android:padding="3dip" />
15. <TextView
16. android:text="column3"
17. android:padding="3dip" />
18. </TableRow>
19.
20. <TableRow>
21. <TextView
22. android:text="column1"
23. android:padding="3dip" />
24. <TextView
25. android:text="column2"
26. android:gravity="right"
27. android:padding="3dip" />
28. <TextView
29. android:text="column3"
30. android:padding="3dip" />
31. </TableRow>
32. </TableLayout>
可伸展column 效果
而动态隐藏column ,可以调用TableLayout.setColumnCollapsed (int columnIndex, boolean isCollapsed) 来指定相应的column 。另外TableLayout 类的boolean isColumnCollapsed (int columnIndex) 能够判断指定的column 是否隐藏。
TableLayout 可以用来做网页上的Form 显示效果,看看官方的sample :
1. <?xml version="1.0" encoding="utf-8"?>
2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:layout_width="fill_parent"
4. android:layout_height="fill_parent"
5. android:stretchColumns="1">
6.
7. <TableRow>
8. <TextView
9. android:text="@string/table_layout_10_user"
10. android:textStyle="bold"
11. android:gravity="right"
12. android:padding="3dip" />
13.
14. <EditText android:id="@+id/username"
15. android:text="@string/table_layout_10_username_text"
16. android:padding="3dip"
17. android:scrollHorizontally="true" />
18. </TableRow>
19.
20. <TableRow>
21. <TextView
22. android:text="@string/table_layout_10_password"
23. android:textStyle="bold"
24. android:gravity="right"
25. android:padding="3dip" />
26.
27. <EditText android:id="@+id/password"
28. android:text="@string/table_layout_10_password_text"
29. android:password="true"
30. android:padding="3dip"
31. android:scrollHorizontally="true" />
32. </TableRow>
33.
34. <TableRow
35. android:gravity="right">
36.
37. <Button android:id="@+id/cancel"
38. android:text="@string/table_layout_10_cancel" />
39.
40. <Button android:id="@+id/login"
41. android:text="@string/table_layout_10_login" />
42. </TableRow>
43. </TableLayout>
Form 效果
相关推荐
程序源代码下载 博文链接:https://greatwqs.iteye.com/blog/1045709
Android使用TableLayout动态布局实例: http://blog.csdn.net/lk_blog/article/details/7436380
android固定头部和左侧表格实现,可以实现纵向合并,不含TableLayout等布局,简单易懂
TableLayout,实现动态添加和删除行,判断行中的数据是否含有空值,可以手动地输入数据,也可以选择数据添加在表格中,并实现统计表格中的数据。
Android入门第五篇之TableLayout (二).docx
android 利用TableLayout自动生成表格
数据列表的回显必须从后面减去子元素同时必须从后面减去子元素,感兴趣的朋友可以看下具体的实现代码,希望对你学习Android TableLayout有所帮助
主要介绍了Android TableLayout中stretchColumns、shrinkColumns用法的相关资料,需要的朋友可以参考下
表格布局的标签是TableLayout,TableLayout继承了LinearLayout。所以它依然是一个线性布局,通过本文给大家介绍Android TableLayout表格布局,感兴趣的朋友一起学习吧
Android 对 Button 的三种监听 Android 对 Button 的三种监听 Android 对 Button 的三种监听 https://blog.csdn.net/nicepainkiller/article/details/85038886
看到很多在安桌上做表格的例子,总感觉不太理想,所以自己做了一个,感觉比较好用,供参考。 (图片在哪儿上传?)
NULL 博文链接:https://hanllove001.iteye.com/blog/1185546
TableLayout实现gridview嵌套gridview效果.md
利用TableLayout自定义可点击表格
TableLayout 简单程序,但不常用的话容易忘记。特此发布,以备不时之需
NULL 博文链接:https://yangguangfu.iteye.com/blog/678977
对tablayout的标签进行拖动选择后重新排序,效果与某视频网站首页导航栏差不多
TableLayout 简单程序,但不常用的话容易忘记。特此发布,以备不时之需
用TableLayout实现九宫格参差不齐的排版用TableLayout实现九宫格参差不齐的排版