it-swarm.com.ru

Android - Установите Layout_Gravity программно для LinearLayout

У меня есть следующая проблема: я реализовал HorizontalScrollView, который содержит в одном случае 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, не работает для меня, как этот пост .

Спасибо!

11
Ron

Сделайте что-то вроде этого:

   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);
33
Vipul Purohit

Поместите ImageView в FrameLayout следующим образом:

Удален дополнительный код

ImageView image = new ImageView(mContext);
image.setLayoutParams(new FrameLayout.LayoutParams(width, height, gravity));

Больше информации здесь .

7
ClaireG

Я думаю, этот будет работать для вас

FrameLayout.LayoutParams layoutParams = new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 layoutParams1.gravity(YourGravity);
yourImage.setLayoutParams(layoutParams);
0
Mohamed Abd Al-Mohsen