【问题标题】:Adding TextViews to a TableLayout "stackable"将 TextViews 添加到 TableLayout “可堆叠”
【发布时间】:2011-03-22 03:46:45
【问题描述】:

好的,我的问题是,我有 n-TextViews,它们将以编程方式添加到 TableLayout 中。完全没关系,我如何设置这些 TextView 或 TableLayout 的样式,每次我添加一些东西时,它都会在其他 TextView 之后的底部添加 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
                                       ]
------------------------------------------

【问题讨论】:

    标签: android layout tablelayout


    【解决方案1】:

    您可能想要使用GridView 来执行您正在尝试做的事情。我不相信有任何 Layout 类支持你想做的事情。

    如果您使用GridView,那么您应该能够使用ArrayAdapter,因为它已经支持轻松创建TextViews。

    如果您只想要一个在下一个子项不适合当前行的情况下环绕的布局,那么您将不得不编写一个自定义布局类来执行此操作。

    【讨论】:

    • 好吧,GridView 有一个缺点,即单个子项的宽度不是动态的。我的 TextView 有时很小,有时和屏幕一样宽。
    【解决方案2】:

    我认为您可以尝试类似的方法:
    - 将TableLayout 作为Activity 的根,FILL_PARENT 作为宽度和高度。
    - 然后获取它的宽度并将其存储在一个变量(mWidth)中。
    - 创建一个TableRow,添加第一个TextView 并将其宽度存储在一个变量(mTotalWidth) 中,然后将TextView 放入行中。
    - 当您想添加一个新的Textview 时,您创建它,获取它的宽度并在将其添加到 mTotalWidth 时计算总和。
    现在
    if mTotalWidth TextView 添加到当前行并增加 mTotalWidth
    else 创建一个新的TableRow,将Textview 放入其中,然后更改值的 mTotalWidth 到此 TextView 的宽度。
    然后,您可以对所有视图重复此操作。这可能看起来有点混乱,但我认为它可以工作。

    【讨论】:

    • 这听起来是个好主意!它有点疯狂但很好:) 在我的情况下唯一的缺点是,我这样构建它:当您单击 ListView 中的某些行时,它会将 TextViews 添加到顶部。当我单击 TextViews 本身时,它们将从顶部删除。删除将是这个解决方案的一个问题......
    • 实际上,我没有看到任何问题。 TableLayout 有一个 removeView 方法,那么问题出在哪里? developer.android.com/reference/android/view/…
    • 我将不得不再次检查长度,以及该行中是否仍有 TextView。 Like:TableRow中是否有TextView,则不移除TableRow,如果TableRow中没有TextView,则移除TableRow。如果在 5 行的第二个 TableRow 中有 3 个 TextView,我删除了其中一个,那么其余的呢? ;)
    • 好吧,我同意,布局的管理会很复杂
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 2012-04-15
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多