Я пытаюсь добавить пять или около того ImageViews в RelativeLayout, причем каждый новый справа от предыдущего. Тем не менее, я получаю (по-видимому) все они сложены друг на друга, как будто все они ALIGN_PARENT_LEFT. Соответствующий фрагмент кода:Устранение неполадок ImageViews программно в RelativeLayout
ImageView[] foo = new ImageView[levels];
for (int i = 0; i < levels; i++) {
foo[i] = new ImageView(context);
layoutFoo.addView(foo[i]);
foo[i].setId(10 + i);
if (i == 0) {
RelativeLayout.LayoutParams fooParams = (RelativeLayout.LayoutParams) foo[i].getLayoutParams();
fooParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
foo[i].setLayoutParams(fooParams);
} else {
RelativeLayout.LayoutParams fooParams = (RelativeLayout.LayoutParams) foo[i].getLayoutParams();
fooParams.addRule(RelativeLayout.RIGHT_OF, foo[i-1].getId());
foo[i].setLayoutParams(fooParams);
}
}
Любые намеки, что я делаю неправильно? Не имеет значения, что ImageViews не имеют ширины (потому что я еще не присвоил им растровое изображение), верно?
Редакция: проблема оказалась не в установке высоты и ширины для ImageView. Решение состоит в том, чтобы установить их либо с помощью setLayoutParams(), либо с помощью конструктора, как в примере JustWork.
Если я чего-то не упускаю, это неправда; попытка добавить правило в представление, которое не было добавлено в макет, вызывает исключение RuntimeException. – DevOfZot
Кроме того, вы могли бы расширить этот второй бит? Предлагаете ли вы добавить несколько изображений в ImageView? Я не вижу никаких методов для этого ... – DevOfZot
К сожалению, вы так скучаете. Это всего лишь один пример, который я нашел через 5 секунд и докажу, что вам не хватает: http://stackoverflow.com/a/2397869/2371858 – JustWork