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