我正在使用一个包含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()...打印了最后一列和第一列图像的大小和填充,并且我总是得到完全相同的。
答案 0 :(得分: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;
希望这个帮助