我正在使用TableLayout打印九张照片。出于某种原因,我在行之间会有很大的差距,如下图所示。我将背景设置为绿色,以便容易看到间隙。我的TableLayout是以编程方式创建的。如何解决这个问题,以便行之间的差距不是很大?
我已经尝试过tableRowParams.setMargins(0,0,0,0)
。
BTW:不,我不想使用ListView等。
我一直在努力解决问题。以下是代码的当前状态:
编辑:正确的图像:
编辑:代码现在可以正常工作(感谢@Guian):
public class FacialExpressionImagesTable extends TableLayout {
public FacialExpressionImagesTable(Context context, List<Bitmap> imageList, int sideDimension, int tableWidth, int tableHeight) {
super(context);
setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
setBackgroundColor(Color.BLUE);
setContent(imageList, context, sideDimension);
}
private void setContent(List<Bitmap> imageList, Context context, final int sideDimension) {
final int iHeight = imageList.get(0).getHeight();
final int iWidth = imageList.get(0).getWidth();
int ndx = 0;
for (int r = 0; r < sideDimension; r++) {
TableRow tableRow = new TableRow(context);
TableLayout.LayoutParams forRow = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
tableRow.setLayoutParams(forRow);
tableRow.setBackgroundColor(Color.RED);
TableRow.LayoutParams elementLayout = new TableRow.LayoutParams(iWidth, LayoutParams.WRAP_CONTENT, 1);
tableRow.requestLayout();
for (int c = 0; c < sideDimension; c++) {
ImageView element = new ImageView(context);
element.setLayoutParams(elementLayout);
element.setAdjustViewBounds(true);
element.setPadding(0, 0, 3, 3);
element.setBackgroundColor(Color.GREEN);
element.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
element.setImageBitmap(imageList.get(ndx++));
element.requestLayout();
tableRow.addView(element);
}
addView(tableRow);
}
}
}
答案 0 :(得分:1)
同时尝试将填充设置为0
,以便表格的每一行内都没有填充
答案 1 :(得分:1)
首先:请注意您在以下位置交换宽度和高度:
new TableRow.LayoutParams(iHeight, iWidth);
但无论如何,你不能把你的桌子给它的位置大小是 getHeight 和 getWidth ,因为它们会被调整大小(取决于屏幕尺寸,屏幕密度)等......你必须根据密度来计算新的尺寸......)
在这里,我认为他们已经减少了。这就是为什么行的高度太大了。
设置你的布局参数,使元素的高度为wrap_content
,0dip的宽度为layout_weight
,宽度为1;
TableRow.LayoutParams elementLayout = new TableRow.LayoutParams(0,LayoutParams.WRAP_CONTENT,1);
然后表格行将换行内容作为高度:
TableLayout.LayoutParams forRow = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
如果图片未根据需要进行缩放,您可能需要为ImageViews
设置比例类型:(使用setScaleType)
elementLayout.setScaleType(ScaleType.CENTER_INSIDE); // 要么 FIT_CENTER ......不太确定
它应该是好的,告诉它不是。
希望有所帮助。