web-dev-qa-db-fra.com

Android - Définir Layout_Gravity par programme pour LinearLayout

J'ai le problème suivant: j'ai implémenté une HorizontalScrollView qui contient dans un cas une LinearLayout et une ImageView. Dans ce cas, l'image représente environ 50% de la largeur de l'écran. Donc je veux le centrer. Malheureusement, le seul moyen que j'ai trouvé pour le centrer est d'utiliser layout_gravity="center" sur la LinearLayout.

Voici mon 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>

Mais je dois définir le layout_gravity par programme. Quelqu'un a-t-il une idée de la façon dont je peux y parvenir ou connaît-il une manière différente? Tout ce que j'ai trouvé via Google ne fonctionne pas pour moi comme ce post .

Merci!

11
Ron

Faites quelque chose comme ça:

   LayoutParams lp = new LayoutParams();
   lp.gravity= Gravity.CENTER_HORIZONTAL; 
   myImg.setLayoutParams(lp);

UPDATE: Une autre façon de faire ceci:

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

Mettez la ImageView dans une FrameLayout comme ceci:

Suppression de code supplémentaire

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

Plus d'infos ici .

7
ClaireG

Je pense que celui-ci travaillera pour vous

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