我在LinearLayout中定义了一个表格布局,如下所示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#E6E6E6"
android:orientation="vertical" >
<TableLayout
android:id="@+id/fbTableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@android:color/darker_gray"
android:stretchColumns="*" >
</TableLayout>
</LinearLayout>
我正在向TableLayout添加动态行,如下所示:
fbTableLayout = (TableLayout) findViewById(R.id.fbTableLayout);
for (int i = 0; i < 4; i++) {
fbTableRow = new TableRow(this);
fbTableRow.setBackgroundColor(Color.WHITE);
LayoutParams layoutParams = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
int leftMargin=10;
int topMargin=2;
int rightMargin=10;
int bottomMargin=2;
layoutParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);
fbTableRow.setLayoutParams(layoutParams);
ImageView iv = new ImageView(this);
iv.setBackgroundDrawable(getResources().getDrawable(
R.drawable.ic_launcher));
iv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT,
0.25f));
TextView tv = new TextView(this);
tv.setText("Album "+ i);
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT,
0.75f));
fbTableRow.addView(iv);
fbTableRow.addView(tv);
fbTableLayout.addView(fbTableRow, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
但是我无法在生成的行之间生成空格。布局如附图所示。
我已经完成了stackoverflow中给出的一些解决方案来解决这个问题但是没有一个能为我工作。不确定我错过了什么。 任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:1)
使用空白图像添加另一个表格行(在循环中)。指定图像的大小以创建空间所需的大小。
答案 1 :(得分:0)
您是否在添加表格行时尝试过此操作?
fbTableLayout.addView(fbTableRow, layoutParams);
如果没有,您可以尝试在表格行中的各个视图上设置边距,但我很确定上面应该在将行添加到表格布局时应用布局参数。
答案 2 :(得分:0)
setMargins方法的文档包括以下注释:
需要完成对requestLayout()的调用,以便考虑新的边距。 requestLayout()可以覆盖左右边距,具体取决于布局方向。
...所以要尝试的一件事就是在添加完所有行后调用fbTableLayout.requestLayout()
。这可能不会产生任何影响,因为视图应该在您已经发布的代码中失效,但尝试不会有什么坏处。
如果这不起作用,您可以在每个表行中使用另一个视图组(例如FrameLayout)来包含ImageView和TextView并在那里设置填充。