0

我正在使用具有 3 行的 TableLayout,每行有 3 个图像按钮。我想保持图像的纵横比。

我已经定义了这样的布局:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="#000000"
    android:padding="0dp" >

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="0dp" >

        <ImageButton
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:contentDescription="@string/Cell"
            android:padding="0dp"
            android:scaleType="fitCenter"
            android:src="@drawable/empty" >
        </ImageButton>

        <!-- Two more images like above -->

    </TableRow>

    <!-- Two more rows like above -->
</TableLayout>

使用这种布局,我得到如下内容:

http://i.stack.imgur.com/reoSd.png

如您所见,最后一列中的行之间出现了奇怪的洞。我不知道为什么,但是如果我将 TableLayout 边距更改为 0dp,这个问题就会消失:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="0dp"
    android:background="#000000"
    android:padding="0dp" >

结果:

http://i.stack.imgur.com/Jytix.png

为什么会有这种行为?我做错了什么?我已经对此进行了测试,模拟器上有许多设备,我总是得到相同的结果。作为附加信息,我已经使用 getHeight() 和 getWidth() 打印了最后一列和第一列图像的大小和填充...,而且我总是得到完全相同的结果。

4

1 回答 1

0

我有这个问题,你应该改用相对布局......如果你仍然想使用表格布局,请尝试:

TableLayout tableView = (TableLayout) findViewById(R.id.tableView);
TableRow row = (TableRow) inflater.inflate(R.layout.tablerow, tableView, false);
ImageView imgDis = (ImageView) row.findViewById(R.id.spinnerEntryContactPhoto);
    imgDis.setPadding(5, 5, 5, 5);
    imgDis.setAdjustViewBounds(true);

    // set row height width

TableRow.LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 50);

    params.topMargin = 0;
    params.bottomMargin = 0;
    params.leftMargin = 0;
    params.rightMargin = 0;

希望这有帮助

于 2013-06-24T11:13:09.170 回答