【问题标题】:Android TableRow - How to add View dynamically to certain postion?Android TableRow - 如何将视图动态添加到某个位置?
【发布时间】:2011-03-21 16:27:52
【问题描述】:

我正在动态构建 TableLayout。而且我需要 TableRow 在某些列位置有间隙。

例如,我需要一行在 3 和 5 位置有 ImageView,下一行在 1、2、4 位置有 ImageView。我尝试使用:

   TableRow row1 = new TableRow(this);  
   row1.addView(new ImageView(this), 2);  
   row1.addView(new ImageView(this), 4);  
   mTable.addView(row1);
   TableRow row2 = new TableRow(this);  
   row2.addView(new ImageView(this), 0);  
   row2.addView(new ImageView(this), 1);  
   row2.addView(new ImageView(this), 3);
   mTable.addView(row2);

但我在运行时遇到了 IndexOfBoundException。
ERROR/AndroidRuntime(771): 原因:java.lang.IndexOutOfBoundsException: index=2 count=0

任何建议将不胜感激。
谢谢。

【问题讨论】:

    标签: android tablelayout tablerow


    【解决方案1】:

    实际上,乍一看您的代码,该错误似乎很合乎逻辑。除非您的表是从 xml 创建的并且作为所需的行数,否则当您在索引 2 处添加视图时,此索引不存在。尝试将此 2 替换为 0,您会发现它有效。因此,如果您想坚持自己的索引,只需添加空的 ImageView 即可。

    【讨论】:

    • Serhy,谢谢您的回复。但是,也许,您知道我应该如何指定一行中的列数?还是表中的行数和列数?我只是想使用 addView(view, index) 没有这样的错误......
    • 如果我理解正确的话,你想在一个单元格中有图像,然后不是在下一个,然后是一个图像,然后不是,......然后在下一行,相反,开始有一个空单元格?
    • 是的,Serhy,你是对的。但是我需要创建各种这样的布局,比如菱形、十字形、勾号等等。我试过你的解决方案,效果很好!但我注意到,创建这种布局的时间增加取决于我创建的视图数量。我必须创建许多空视图...
    • 在这种情况下,也许尝试使用 GridView?这会给你一个网格,你可以定义行数/列数
    • 其实GridView不支持特定位置的addView操作。不过谢谢你)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多