`
shappy1978
  • 浏览: 698287 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Kuix TableLayout bug说明

    博客分类:
  • J2ME
 
阅读更多

    实际上用过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实现边框

    在Android开发中,TableLayout是布局管理器的一种,它允许开发者以表格的形式排列视图(Views)。本教程将深入探讨如何在Android应用中使用TableLayout来实现边框效果,同时结合提供的源码进行分析。 首先,...

    Android使用TableLayout动态布局实例

    `TableLayout`是Android提供的一种用于创建表格样式的布局,尤其适合展示数据或者组织组件。本篇文章将深入探讨如何使用`TableLayout`进行动态布局,结合实例来理解其用法。 `TableLayout`是`LinearLayout`的扩展,...

    TableLayout

    java TableLayout布局

    tablelayout实现表格效果

    在Android开发中,TableLayout是布局管理器的一种,它允许开发者创建类似电子表格的布局,非常适合展示数据或者组织内容。本篇文章将详细讲解如何利用TableLayout在Android中实现表格效果。 **1. TableLayout基本...

    用TABLELAYOUT做表格

    在Android开发中,创建用户界面是一项重要任务,而表格布局(TableLayout)是实现结构化数据展示的有效方式。本文将详细介绍如何使用TableLayout来构建一个功能完善的表格,并提供一些最佳实践和注意事项。让我们...

    安卓 tablelayout布局实例

    在本教程中,我们将深入探讨`TableLayout`的使用,包括其基本概念、属性以及如何在实际项目中创建和操作表格布局。 `TableLayout`是Android `LinearLayout`的一个子类,它提供了行列结构来排列子视图,通常这些子...

    TableLayout,实现动态添加和删除行,并实现统计表格中的数据

    【TableLayout详解】 TableLayout是Android布局管理器中的一种,它是线性布局(LinearLayout)的扩展,主要用于构建类似电子表格的二维布局。TableLayout允许开发者创建一个由行和列组成的表格,非常适合展示数据...

    018集-TableLayout视频教程

    【TableLayout】是Android开发中的一个关键布局组件,主要用于创建表格结构的用户界面。在本视频教程中,讲师深入浅出地介绍了TableLayout的工作原理、使用方法及其在实际应用中的重要性。 TableLayout继承自...

    TableLayout数据显示

    以下是对TableLayout的详细说明: 1. **TableLayout基本概念**: TableLayout是一个线性布局的扩展,它允许开发者在垂直方向上堆叠多个TableRow,每个TableRow就像HTML中的元素,可以包含一个或多个单元格(View或...

    利用TableLayout自定义可点击表格

    在Android开发中,`TableLayout` 是一个非常实用的布局组件,它允许开发者创建类似电子表格的二维布局。本文将深入探讨如何利用`TableLayout`来自定义可点击的表格,并提供丰富的实现细节。 首先,`TableLayout`是`...

    TableLayout实现gridview嵌套gridview效果

    `TableLayout`是Android提供的一种用于创建表格样式的布局,而`GridView`则是用于展示数据集的网格视图。本篇文章将详细探讨如何利用`TableLayout`实现`GridView`的嵌套效果,以此达到更复杂的界面设计需求。 `...

    tablelayout for swing

    标题中的"tablelayout for swing"指的是在Java Swing中使用TableLayout进行界面布局管理的知识点。TableLayout是一种自定义的布局管理器,它允许开发者通过表格形式来组织组件,提供了更灵活和精确的控制方式。 ...

    TableLayout不显示列

    TableLayout是Android开发中一种常用的布局管理器,它允许开发者以表格的形式排列控件,非常适合创建网格或行列结构的用户界面。在Android Studio中,TableLayout通常被XML布局文件用于组织视图,使得屏幕元素可以...

    TableLayout.zip

    TableLayout是Java编程中一种强大的布局管理器,主要用于在Swing应用中组织和排列组件。在Java GUI设计中,布局管理器是至关重要的,因为它们决定了窗口中的组件如何响应大小改变和位置调整。TableLayout以其网格...

    TableLayout程序生成

    TableLayout是Android布局系统中的一个组件,主要用于在屏幕上创建表格化的视图。它是一个线性布局的扩展,允许你以二维表格的形式排列子视图,即行和列。在这个"TableLayout程序生成"中,我们可以深入理解...

    android 利用TableLayout自动生成表格

    在Android开发中,TableLayout是布局管理器的一种,它允许我们创建二维的表格形式的界面。这个组件在显示数据或创建表单时非常有用。本文将深入探讨如何利用TableLayout自动生成表格,以及相关的Android开发知识。 ...

    TableLayout伸缩列

    TableLayout是Android开发中一种布局管理器,它用于在屏幕上创建表格式的布局。在这个布局中,你可以设置行和列,并让这些元素根据需要自动伸缩。TableLayout的主要优点在于其灵活性,可以方便地创建响应式界面,...

    TableLayout制作自定义可点击表格

    `TableLayout`是Android SDK提供的一种布局管理器,它允许开发者创建类似电子表格的布局,由多个行(TableRow)组成,每行包含一个或多个视图。在这个实例中,我们将探讨如何利用`TableLayout`来构建一个可点击的...

    TableLayout_Project

    《TableLayout_Project——深入解析Android TableLayout布局》 在Android开发中,TableLayout是一个非常实用的布局工具,它允许开发者创建表格样式的用户界面。这个名为"TableLayout_Project"的项目,显然着重于...

    TableLayout+ViewPager+Fragment滑动标题栏索引

    在Android应用开发中,"TableLayout+ViewPager+Fragment滑动标题栏索引"是一个常见的设计模式,用于构建具有高效交互性的UI。这个标题所指的是一种实现方式,它结合了三个核心组件:TableLayout、ViewPager和...

Global site tag (gtag.js) - Google Analytics