将TextView添加到TableLayout“可堆叠”

时间:2010-07-28 13:15:13

标签: android layout tablelayout

好的,我的问题是,我有n-TextViews,它们将以编程方式添加到TableLayout中。这完全无关紧要,我如何设置这些TextViews或TableLayout的样式,每次添加内容时,它都会在其他TextViews之后的底部添加TextView。 这些视图有一个可变宽度,它是根据文本长度和一些像素计算出来的(WRAP_CONTENT只是100%宽度......)。

It is like this right now:
------------------------------------------
[TextView 1]
[TextView 2]
[TextView 3]
[TextView 4]
------------------------------------------

And it should be like:
------------------------------------------
[TextView 1] [TextView 2] [TextView 3]
[TextView 4]
------------------------------------------

其实我不需要TableLayout。我仍然可以随心所欲地改变它。当然,如果那些TextViews可以将WRAP_CONTENT作为宽度,那就更好了。

编辑: 顺便说一句。具有orientation =“horizo​​ntal”的LinearLayout在第一次更正时添加TextViews,但最后它不会换行到下一行,它只是将它们添加到右侧并且它将被拆分,如:

------------------------------------------
[TextView 1] [TextView 2] [TextView 3] [Te
                                       [xt
                                       Vie
                                       w 4
                                       ]
------------------------------------------

2 个答案:

答案 0 :(得分:0)

您可能希望使用GridView来执行您要执行的操作。我不相信有任何布局类支持您想要做的事情。

如果您选择GridView,那么您应该可以使用ArrayAdapter,因为它已经支持轻松创建TextView

如果您只想要一个包装好的布局,如果下一个孩子不适合当前行,那么您将不得不编写一个自定义布局类来执行此操作。

答案 1 :(得分:0)

我想你可以尝试这样的事情:
- 以TableLayout的根为ActivityFILL_PARENT作为宽度和高度。
- 然后获取其宽度并将其存储在变量(mWidth)中 - 创建TableRow,添加第一个TextView并将其宽度存储在变量(mTotalWidth)中,然后将TextView放入行中。 - 当您想要添加新的Textview时,可以创建它,获取其宽度并在将其添加到mTotalWidth时计算总和。
现在
if mTotalWidth< mWidth,您将TextView添加到当前行并增加mTotalWidth
else您创建了一个新的TableRow,将Textview放入其中,并将mTotalWidth的值更改为此TextView的宽度。
然后你可以为你的所有观点重复这个。这可能看起来有点乱,但我认为它可行。