Как сделать ImageView динамически(из кода) с заданными параметрами
Имеется ImageView, нужно сделать точно такое же View из кода.
<ImageView
android:id="@+id/image15"
android:layout_width="91dp"
android:layout_height="91dp"
android:gravity="center"
android:layout_below="@+id/image14"
android:layout_weight="1"
android:scaleType="fitCenter">
</ImageView>
Как я понимаю нужно сделать как то так
ImageView image = new ImageView(context);
image.setLayoutParams...
а как дальше установить все нужные атрибуты я не знаю. Плюс ко всему, я не понимаю как мне обращаться к нужному id View компонента из класса ресурсов
P.S. А потом под этим компонентом сгенерировать еще одно точно такое же View.
Ответы (1 шт):
Автор решения: Спицко Дмитрий
→ Ссылка
Какой контейнер вы используете? Судя по below - RelativeLayout, но в нем не поддерживается свойство weigth. Если его откидываем, то будет так
ImageView image = new ImageView(context);
image.setId(R.id.image15) //для того, чтобы это сработало, среди ваших xml разметок должен где-то упоминаться этот id, иначе в классе R его не будет. А вообще вы можете сами придумать любое число и задать его этой командой как id.
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)//создаем LayoutParams для размещения элемента в RelativeLayout. Если элемент будет размещаться в LinearLayout, то брать реализацию LayoutParams надо будет оттуда и т.д.
image.setForegroundGravity(Gravity.CENTER)
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
lp.addRule(RelativeLayout.BELOW, R.id.image14) //добавляем привязку "под объект"
image.setLayoutParams(lp)
А вообще можно вбить в гугл запрос вида "android ImageView %имя атрибута% programmatically" и по первой же ссылке в 95% случаев будет страница с нужным примером