2013-07-31 23 views
10

Ich habe das folgende Problem: Ich implementierte eine HorizontalScrollView, die in einem Fall eine LinearLayout und eine ImageView enthält. In diesem Fall beträgt das Bild etwa 50% der Bildschirmbreite. Also möchte ich es zentrieren. Leider ist der einzige Weg, den ich gefunden habe, um es zu zentrieren, layout_gravity="center" auf dem LinearLayout zu verwenden.Android - Set Layout_Gravity programmgesteuert für LinearLayout

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 brauche die layout_gravity programmatisch zu setzen. Hat jemand eine Idee, wie ich das erreichen kann oder einen anderen Weg kennt? Alle Dinge, die ich über Google gefunden habe, funktionieren nicht für mich wie this post.

Danke!

+0

haben Sie versucht, das Image in einem Linearlayout encapsultaing und die Parameter für das Layout einstellen, wie in der Post, der Sie besuchen gezeigt? – ClaireG

+0

Ja, ich habe es versucht ... funktioniert nicht – Ron

Antwort

29

Do Somethings wie folgt aus:

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

UPDATE: Ein anderer Weg, 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); 
+4

funktioniert nicht. sorry ... – Ron

+0

Damit der Gravity-Wert funktioniert, muss das Element MATCH_WIDTH gesetzt sein oder die gesamte Breite des übergeordneten Elements belegen. Wenn dies nicht der Fall ist, muss es einen Gewichtswert von 100% haben (was die Eltern vollständig belegt), nur dann funktioniert das Einstellen der Schwerkraft. – somedev

6

Setzen Sie die ImageView in einem FrameLayout wie folgt aus:

entfernt Extra Code

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

Weitere Informationen here.

+1

funktioniert nicht ... aber wie auch immer, warum soll ich die Bildansicht in ein 'FrameLayout' setzen und FrameLayout.Params in die imageView und nicht in die Elterndatei einfügen? – Ron

+0

der dritte Parameter ist nicht "Schwerkraft", es ist "Gewicht"! –

0

denke ich, wird dies für Sie arbeiten

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