实际上用过TableLayout来作表格的人估计都碰到过,TableLayout有根据cell内容长度自动扩展的特点(要保证表格不变形,只能自己断行),如果cell合并,当合并cell太长时,自动扩展所在列的宽度,而不是根据合并后的列宽度来扩展,例子如下:
<screen title="TableLayout Demo">
<scrollpane scrollbar="both">
<container style="layout:tablelayout;gap:1 1;border:1 1 1 1;border-color:red;bg-color:red;font-size:large">
<text class="child1" style="min-size:30 0">姓名</text>
<text class="child1" style="min-size:50 0">部门</text><break/>
<text class="child1" style="span:2 1">我们是更加重视下拉</text>
</container>
</scrollpane>
<screenfirstmenu onAction="back">Back</screenfirstmenu>
<screenSecondMenu onAction="exit">Exit</screenSecondMenu>
</screen>
第二行采用合并单元格,结果第一列被迫扩展到必须包含合并cell文字的长度,效果如下图:
实际上在计算每列最小宽度时,作者偷了个懒,直接用所在列中最大长度的widget作为列宽度,而没有计算它合并的列,虽然实际上它确实对合并列做了一些处理.有兴趣的人可以看看它的align函数,这个函数可不是对齐,是计算每一列宽度
/**
* shappycom
* @param first 链表
* @param values 返回值(width/height)
* @param weights
* @param horizontal
* @param fullSize 减去边界和间隔后可用的长度
*/
private static final void align(Metrics first, int[] values, int[] weights, boolean horizontal, int fullSize) {
for (int size = 1, next = 0; size != 0; size = next, next = 0) {
for (Metrics metrics = first; metrics != null; metrics = metrics.next) {
Span span = metrics.widget.getSpan();
int orientedSpan = horizontal ? span.colspan : span.rowspan;
if (orientedSpan == size) {
int value;
if (weights != null) {
value = horizontal ? metrics.width : metrics.height;
} else {
Weight weight = metrics.widget.getWeight();
value = horizontal ? weight.weightx : weight.weighty;
}
int index = horizontal ? metrics.x : metrics.y;
if (weights != null && weights[index] != 0) {
value = MathFP.toInt(MathFP.mul(weights[index], MathFP.toFP(fullSize)));
}
values[index] = Math.max(values[index], value);
} else if ((orientedSpan > size) && ((next == 0) || (next > orientedSpan))) {
next = orientedSpan;
}
}
}
}
修改后效果图:
- 大小: 2.8 KB
- 大小: 2.3 KB
分享到:
相关推荐
在Android开发中,TableLayout是布局管理器的一种,它允许开发者以表格的形式排列视图(Views)。本教程将深入探讨如何在Android应用中使用TableLayout来实现边框效果,同时结合提供的源码进行分析。 首先,...
`TableLayout`是Android提供的一种用于创建表格样式的布局,尤其适合展示数据或者组织组件。本篇文章将深入探讨如何使用`TableLayout`进行动态布局,结合实例来理解其用法。 `TableLayout`是`LinearLayout`的扩展,...
java TableLayout布局
在Android开发中,TableLayout是布局管理器的一种,它允许开发者创建类似电子表格的布局,非常适合展示数据或者组织内容。本篇文章将详细讲解如何利用TableLayout在Android中实现表格效果。 **1. TableLayout基本...
在Android开发中,创建用户界面是一项重要任务,而表格布局(TableLayout)是实现结构化数据展示的有效方式。本文将详细介绍如何使用TableLayout来构建一个功能完善的表格,并提供一些最佳实践和注意事项。让我们...
在本教程中,我们将深入探讨`TableLayout`的使用,包括其基本概念、属性以及如何在实际项目中创建和操作表格布局。 `TableLayout`是Android `LinearLayout`的一个子类,它提供了行列结构来排列子视图,通常这些子...
【TableLayout详解】 TableLayout是Android布局管理器中的一种,它是线性布局(LinearLayout)的扩展,主要用于构建类似电子表格的二维布局。TableLayout允许开发者创建一个由行和列组成的表格,非常适合展示数据...
【TableLayout】是Android开发中的一个关键布局组件,主要用于创建表格结构的用户界面。在本视频教程中,讲师深入浅出地介绍了TableLayout的工作原理、使用方法及其在实际应用中的重要性。 TableLayout继承自...
以下是对TableLayout的详细说明: 1. **TableLayout基本概念**: TableLayout是一个线性布局的扩展,它允许开发者在垂直方向上堆叠多个TableRow,每个TableRow就像HTML中的元素,可以包含一个或多个单元格(View或...
在Android开发中,`TableLayout` 是一个非常实用的布局组件,它允许开发者创建类似电子表格的二维布局。本文将深入探讨如何利用`TableLayout`来自定义可点击的表格,并提供丰富的实现细节。 首先,`TableLayout`是`...
`TableLayout`是Android提供的一种用于创建表格样式的布局,而`GridView`则是用于展示数据集的网格视图。本篇文章将详细探讨如何利用`TableLayout`实现`GridView`的嵌套效果,以此达到更复杂的界面设计需求。 `...
标题中的"tablelayout for swing"指的是在Java Swing中使用TableLayout进行界面布局管理的知识点。TableLayout是一种自定义的布局管理器,它允许开发者通过表格形式来组织组件,提供了更灵活和精确的控制方式。 ...
TableLayout是Android开发中一种常用的布局管理器,它允许开发者以表格的形式排列控件,非常适合创建网格或行列结构的用户界面。在Android Studio中,TableLayout通常被XML布局文件用于组织视图,使得屏幕元素可以...
TableLayout是Java编程中一种强大的布局管理器,主要用于在Swing应用中组织和排列组件。在Java GUI设计中,布局管理器是至关重要的,因为它们决定了窗口中的组件如何响应大小改变和位置调整。TableLayout以其网格...
TableLayout是Android布局系统中的一个组件,主要用于在屏幕上创建表格化的视图。它是一个线性布局的扩展,允许你以二维表格的形式排列子视图,即行和列。在这个"TableLayout程序生成"中,我们可以深入理解...
在Android开发中,TableLayout是布局管理器的一种,它允许我们创建二维的表格形式的界面。这个组件在显示数据或创建表单时非常有用。本文将深入探讨如何利用TableLayout自动生成表格,以及相关的Android开发知识。 ...
TableLayout是Android开发中一种布局管理器,它用于在屏幕上创建表格式的布局。在这个布局中,你可以设置行和列,并让这些元素根据需要自动伸缩。TableLayout的主要优点在于其灵活性,可以方便地创建响应式界面,...
《TableLayout_Project——深入解析Android TableLayout布局》 在Android开发中,TableLayout是一个非常实用的布局工具,它允许开发者创建表格样式的用户界面。这个名为"TableLayout_Project"的项目,显然着重于...
在Android应用开发中,"TableLayout+ViewPager+Fragment滑动标题栏索引"是一个常见的设计模式,用于构建具有高效交互性的UI。这个标题所指的是一种实现方式,它结合了三个核心组件:TableLayout、ViewPager和...
andorid tablelayout实例 疯狂Android讲义