webentwicklung-frage-antwort-db.com.de

Android - Layout_Gravity programmatisch für LinearLayout einstellen

Ich habe folgendes Problem: Ich habe eine HorizontalScrollView implementiert, die in einem Fall eine LinearLayout und eine ImageView enthält. In diesem Fall beträgt das Bild etwa 50% der Bildschirmbreite. Ich möchte es zentrieren. Die einzige Möglichkeit, die ich zentrieren konnte, ist leider, layout_gravity="center" für die LinearLayout zu verwenden.

Hier ist meine 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>

Aber ich muss den layout_gravity programmgesteuert einstellen. Hat jemand eine Idee, wie ich das erreichen kann oder weiß ich einen anderen Weg? Alle Dinge, die ich über Google gefunden habe, funktionieren für mich nicht wie dieser Beitrag .

Vielen Dank!

11
Ron

Tun Sie so etwas:

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

UPDATE: Eine andere Möglichkeit, dies zu tun:

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

Fügen Sie das ImageView in ein FrameLayout wie folgt ein:

Extra Code entfernt

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

Mehr Infos hier .

7
ClaireG

Ich denke, dieser wird für Sie arbeiten

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