4.0之后推荐使用GridLayout代替TableLayout
详情见:
浅谈android4.0开发之GridLayout布局
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="1dip"以及背景色,就可以实现一条分割线。android:layout_span可以设置合并几个单元格。
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()。
而动态隐藏column,可以调用setColumnCollapsed (int columnIndex, boolean isCollapsed)来指定相应的column。
另外TableLayout类的boolean isColumnCollapsed (int columnIndex)能够判断指定的column是否隐藏。
关于分割线:
我们可以通过在两个TableRow之间添加一个<View>,并设置它的layout_height="1dip"和background来解决。但这样就多产生了一个View,有点浪费。
其实还可以设置TableRow的bottomMargin=1来产生一条分割线。
为何不能动态生成TableLayout ?
是否有时候会碰到这样的情景
另一个问题:
关于TableLayout和HorizontalScrollView一起使用时的宽度问题
我有一个TableLayout,它的内容是动态生成的。我遇到了下面的问题:
当动态生成的一行的内容太长时,靠右边的内容会被遮住了。于是我想要这个TableLayout在横向上可以滚动。
解决的办法是,用HorizontalScrollView包装TableLayout,这样,当内容很长时,就会出现横向滚动条。
像这样:
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:id="@+id/tl_forcast_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp">
</TableLayout>
</HorizontalScrollView>
但此时又出现了另一个问题,加上HorizontalScrollView后,虽然我已经设了TableLayout的宽度是fill_parent。但当内容较少时,TableLayout还是根据内容自适应宽度,不能满屏。
此时,需要设置一个属性就能解决问题了。设置HorizontalScrollView的android:fillViewport="true"。也就是设置是否将HorizontalScrollView的内容宽度拉伸以适应视口(viewport)
分享到:
相关推荐
本篇文章将深入探讨如何使用`TableLayout`进行动态布局,结合实例来理解其用法。 `TableLayout`是`LinearLayout`的扩展,它允许开发者创建表格结构,由多个`TableRow`组成,每个`TableRow`类似HTML中的`tr`元素,...
需要注意的是,尽管 TableLayout 在早期版本的 Android 应用中较为常用,但对于复杂的数据展示,建议考虑使用更现代的布局方案,如 RecyclerView 配合 GridLayoutManager 或 GridLayoutManager 来实现类似的效果,以...
本教程将深入探讨如何在Android应用中使用TableLayout来实现边框效果,同时结合提供的源码进行分析。 首先,TableLayout是LinearLayout的一个子类,它允许你通过TableRow组件来组织内容,形成行列结构。在XML布局...
本文将详细介绍TableLayout的基本用法以及如何在设计中使用选项卡。 ### TableLayout的基础知识 1. **结构**:TableLayout由一个或多个TableRow组成,每个TableRow代表表格的一行。TableRow中可以包含一个或多个...
要使用TableLayout,首先需要在XML布局文件中添加TableLayout元素,然后在其中嵌套TableRow元素。以下是一个简单的例子: ```xml <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"> ...
java TableLayout布局
本文将详细介绍如何使用TableLayout来构建一个功能完善的表格,并提供一些最佳实践和注意事项。让我们一起深入探讨这个主题。 首先,TableLayout是Android SDK中的一个视图容器,它允许开发者以二维表格的形式组织...
在这个场景中,我们将深入探讨如何使用TableLayout动态添加和删除行,以及如何实现数据的统计。 1. **动态添加和删除行** 在TableLayout中,每一行是由TableRow对象构成的。要动态添加行,首先需要创建一个新的...
在本教程中,我们将深入探讨`TableLayout`的使用,包括其基本概念、属性以及如何在实际项目中创建和操作表格布局。 `TableLayout`是Android `LinearLayout`的一个子类,它提供了行列结构来排列子视图,通常这些子...
1. `Table.java`:可能是一个自定义的表格组件,用于演示或配合TableLayout使用。 2. `DiagonalLayout.java`:可能是一个与TableLayout类似的布局管理器,但支持对角线方向的布局。 3. `SwingToolkit.java`:可能是...
总之,`TableLayout`与`GridView`的嵌套使用能够帮助我们创建复杂且有层次的用户界面,但需要注意布局的管理和滚动行为的控制,以保证用户体验的流畅性和一致性。同时,自定义适配器和事件处理是实现这种效果的核心...
本项目"android操作Sqlite,使用tablelayout做自适应显示"主要展示了如何在Android应用中集成SQLite数据库,以及利用TableLayout进行动态数据显示。下面我们将深入探讨相关知识点。 首先,SQLite数据库在Android中...
在本视频教程中,讲师深入浅出地介绍了TableLayout的工作原理、使用方法及其在实际应用中的重要性。 TableLayout继承自GridLayout,它允许开发者以二维表格的形式组织View组件,通常包括行(rows)和列(columns)...
TableLayout有一个特殊的属性`android:stretchColumns`,它可以指定哪些列应该拉伸以填满可用空间。这对于创建自适应的表格布局非常有用。 5. **ShrinkColumns**: 类似地,`android:shrinkColumns`属性可以指定...
4. **自定义样式**:为了使表格更美观,可以使用CSS样式(`style.xml`)为`TableLayout`、`TableRow`以及单元格设置背景色、边框等属性。 5. **动态加载数据**:如果数据是从服务器获取的,可以通过`Adapter`和`...
在Android UI设计中,`LinearLayout`和`TableLayout`是两种常见的布局管理器,它们各自有不同的特点和使用场景。在实际开发中,我们有时需要将它们混合使用,以实现更复杂的界面布局。本文将深入探讨`LinearLayout`...
通过分析代码和调整布局参数,你应该能够理解TableLayout的工作机制,并解决不显示列的问题。同时,这个项目也可以作为一个参考,帮助你在未来的开发中避免类似的陷阱。记住,熟悉并熟练掌握TableLayout的用法对于...
5. **使用场景**:TableLayout通常用于创建具有网格样式的用户界面,如表格数据展示、选项卡式布局或有规则的多列布局。 6. **动态添加行**:在代码中,你可以动态地创建和添加TableRow,以在运行时构建表格。这...
5. **嵌套布局**:与其他布局管理器一样,TableLayout可以与其他布局管理器结合使用,实现更复杂的布局需求。例如,可以在TableLayout的一个单元格中嵌入一个BorderLayout或GridLayout。 6. **灵活性**:...
tablelayout, 基于表的Java UI工具箱布局 请使用 TableLayout讨论组的支持。概述TableLayout是一个轻量级的Java库,它使用逻辑 table 来设置UI小部件的位置和大小,类似于HTML表。 TableLayout的核心是 UI,它支持 ...