gpt4 book ai didi

ListView中的Android TableLayout,神秘的列收缩

转载 作者:行者123 更新时间:2023-11-30 04:46:07 29 4
gpt4 key购买 nike

我在 ListView 中使用 TableLayout。我提供的数据本质上是表格形式的,TableLayout 似乎是确保列按需要排列的好方法。这种方法在大多数情况下都很有效 - 见下文。

所需 View :
desired view

但有时代表列的 View 会包裹其文本内容,如下所示。

搜索了一段时间后,我遇到了 following discussion on the Android Google Group .作为回应,我在 TableLayout 中设置了 android:stretchColumns="*" 瞧,包含的 TextView 停止神秘地包装它们的文本。

这是布局的 XML 的部分内容,更改通过注释突出显示:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*"> <!-- stretchColumns needed to prevent
TableLayout from unilaterally deciding to shrink the column
width and thereby causing text to wrap. -->

虽然我现在得到了想要的结果,但我对为什么这“解决”了我的问题感到有点困惑。 TableLayout documentation指出“列的宽度由该列中具有最宽单元格的行定义。”但如果这是真的,为什么列的大小一开始就明显缩小导致文本换行?

谁有好的解释?

最佳答案

容器向它们的子容器询问它们需要多少空间,并且这个过程递归地继续。任何动态大小的布局框架都将以这种方式工作。从内到外, children 向他们的 parent 报告他们想要的尺寸,然后在第二次传递时, parent 向他们的 child 报告他们可以使用多少空间。当它们未包含在 stretchColumns 列表中时(明确地按位置,或如示例中的通配符隐式),它们要求最低限度,在 TextView 的情况下,这是显示包装文本所需的最小空间。当它们包含在 stretchColumns 列表中时,它们会报告显示全部内容所需的宽度,如果适合,它们就不会换行。任何请求比可用空间更多的空间的人都会得到换行的文本。我想优先级是按所需空间从最少到最多的顺序给出的,所以如果你有 stretchColumns="*" 最大的文本 block 首先被包装(如果需要),然后其他人都可以才能正常显示。

关于ListView中的Android TableLayout,神秘的列收缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917134/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com