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);