margin einer ImageView ändern

  • 3 Antworten
  • Letztes Antwortdatum
M

Manuel1805

Ambitioniertes Mitglied
2
Hallo zusammen,

ich versuche die margins zur Laufzeit zu ändern. Leider mit suboptimalen Ergebnis.

Wenn ich den folgenden Code verwende verschiebt sich die ImageView in die TextView. :ohmy:

Gibt es eine andere Methode die Margins zur Laufzeit zu ändern? Oder wie verhindere ich das Verschieben der ImageView?

Mein Java-Code schaut wie folgt aus:
Code:
...
bild = (ImageView) view.findViewById(R.id.a_ib_image);
			bild.setImageResource(R.drawable.entnahmegewinnverlust);
			//NEU
			
			 RelativeLayout.LayoutParams rm = 
			            new RelativeLayout.LayoutParams
			            (RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
			    
			  //  rm.setMargins(left, top, right, bottom);
			  rm.setMargins(0, 50, 0, 0);
			   bild.setLayoutParams(rm);

Meine Layout schaut wie folgt aus:
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/hintergrund_standard"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/a_ib_inhalt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="70dp"
        android:gravity="left"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="22sp" />
    
    <ImageView
        android:id="@+id/a_ib_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/a_ib_inhalt_seite_von_bis"
        android:layout_alignParentTop="false"
        android:layout_below="@+id/a_ib_inhalt"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="5dp"
        android:baselineAlignBottom="true"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:visibility="visible" />
    
     <TextView
         android:id="@+id/a_ib_inhalt_seite_von_bis"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:layout_centerHorizontal="true"
         android:layout_marginBottom="8dp"
         android:background="#ffffff"
         android:textSize="15sp" />
     
    <ImageView
        android:id="@+id/a_ib_pfeil_rechts"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_action_forward" />

   

</RelativeLayout>[CODE]
[/CODE]
 
im Manifest setzt du doch ganz andere Werte:

PHP:
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="5dp"

und im code setzt du es auf diese werte:

PHP:
rm.setMargins(0, 50, 0, 0);

außerdem setzt du es in Pixel nicht in "dp" ;)

also wäre soetwas besser:

PHP:
float scalingFactor=context.getResources().getDisplayMetrics().density
rm.setMargins(30*scalingFactor, 5*scalingFactor, 30*scalingFactor, 5*scalingFactor);
 
Zuletzt bearbeitet:
Hallo Jaiel,

vielen Dank für Deine Antwort.
Zu meinen Beitrag sollte ich vielleicht noch erwähnen, dass ich sehr viele Seiten Text mit diesem Layout anzeige, diese sehen mit den gesetzten margins gut aus. Nur die drei Seiten Text müssen mit den angepassten Layouts erscheinen. Ich würde das Problem gerne per Code lösen.

Das Problem, welches ich habe ist, dass durch den Code das Image nicht mehr unter dem Text, sonder im Text steht :confused2:


Code:
             RelativeLayout.LayoutParams rm = 
                        new RelativeLayout.LayoutParams
                        (RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                
              //  rm.setMargins(left, top, right, bottom);
              rm.setMargins(0, 50, 0, 0);
               bild.setLayoutParams(rm);
 
Hast du die Angaben jetzt in dp angegeben bzw. Mit dem skalierungsfaktor multipliziert?

Ach ja du müsstest noch dazu alle Angaben die du in XML gemacht für die imageview erneut setzen da du einach ein neues Parameter Objekt erzeugst...Der hat die Infos wo er sich befinden soll also unter Text 1 über Text 2 und so weiter gar nicht. Denke ich jedenfalls

Der ursprüngliche Beitrag von 00:53 Uhr wurde um 01:01 Uhr ergänzt:

Oder ruf mal diese Funktion der imageview auf : View | Android Developers)
Vielleicht klappt dann auch so
 
Zurück
Oben Unten