Я использую TableLayout для печати девяти изображений. По какой-то причине я получаю большой разрыв между строками, как показано на рисунке ниже. Я установил фон зеленым, так что пробелы легко увидеть. My TableLayout создается программно. Как исправить эту проблему, чтобы промежуток между рядами был не таким большим?Удалите произвольный промежуток между TableRow в TableLayout
Я уже пробовал tableRowParams.setMargins(0,0,0,0)
.
BTW: Нет, я не хочу использовать ListView и т.д.
я возиться с кодом много пытаюсь решить эту проблему. Ниже просто текущее состояние кода:
EDIT: ПРАВИЛЬНЫЙ ОБРАЗ:
EDIT: код теперь будет работать нормально (спасибо @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);
}
}
}
, пожалуйста, укажите свой код, где вы динамически создаете свой макет таблицы. – KDeogharkar
можете ли вы сделать новый снимок? –
@MoshErsan Я просто потратил 50 очков (около 20% от моего общего количества тогда), чтобы получить помощь, чтобы получить правильный ответ, тогда я был достаточно хорош, чтобы опубликовать исправленный код.Поэтому, если вы собираетесь попросить новый скриншот, самое меньшее, что вы можете сделать, это дать мне 5 очков, чтобы помочь составить 50 очков :). – learner