0

我在 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 中给出的许多解决方案来解决这个问题,但没有一个对我有用。不知道我错过了什么。任何帮助将不胜感激。提前致谢。

4

3 回答 3

1

添加另一个带有空白图像的表格行(在循环中)。指定图像的大小以创建空间所需的大小。

于 2013-01-02T20:58:15.910 回答
0

您在添加表格行时是否尝试过此操作?

fbTableLayout.addView(fbTableRow, layoutParams);

如果没有,您可以尝试在表格行中的各个视图上设置边距,但我很确定在将行添加到表格布局时,上面应该应用布局参数。

于 2013-01-02T20:55:07.227 回答
0

setMargins 方法的文档包括以下注释:

需要调用 requestLayout() 以便考虑新的边距。requestLayout() 可能会根据布局方向覆盖左右边距。

...所以要尝试的一件事是fbTableLayout.requestLayout()在添加所有行后调用。这可能不会有什么不同,因为视图应该在您已经发布的代码中变得无效,但尝试一下不会有什么坏处。

如果这不起作用,您可以在每个表格行中使用另一个视图组(例如 FrameLayout)来包含您的 ImageView 和 TextView 并在那里设置您的填充。

于 2013-01-02T21:29:06.087 回答