Android - Установите Layout_Gravity программно для LinearLayout
У меня возникла следующая проблема: я реализовал HorizontalScrollView
, который содержит в одном случае a LinearLayout
и ImageView
. В этом случае изображение составляет около 50% ширины экрана. Поэтому я хочу сосредоточить его. К сожалению, единственный способ, которым я нашел центр, - использовать layout_gravity="center"
на LinearLayout
.
Вот мой xml:
<HorizontalScrollView
android:layout_gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/myImg"
android:layout_width="wrap_content"
android:adjustViewBounds="true"
android:layout_height="150dp"/>
</LinearLayout>
</HorizontalScrollView>
Но мне нужно установить layout_gravity
программно. Есть ли у кого-нибудь идея, как я могу достичь этого или знаю по-другому? Все, что я нашел через Google, не работает для меня, как этот пост.
Спасибо!
Ответы
Ответ 1
Есть что-то вроде этого:
LayoutParams lp = new LayoutParams();
lp.gravity= Gravity.CENTER_HORIZONTAL;
myImg.setLayoutParams(lp);
ОБНОВЛЕНИЕ:
Другой способ сделать это:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.weight = 1.0f;
params.gravity = Gravity.CENTER;
imageView.setLayoutParams(params);
Ответ 2
Поместите ImageView
в FrameLayout
следующим образом:
Удаленный дополнительный код
ImageView image = new ImageView(mContext);
image.setLayoutParams(new FrameLayout.LayoutParams(width, height, gravity));
Подробнее здесь.
Ответ 3
Думаю, этот будет работать для вас
FrameLayout.LayoutParams layoutParams = new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams1.gravity(YourGravity);
yourImage.setLayoutParams(layoutParams);