0

Ich verwende den unten stehenden Code, um Bildansicht rechts unten mit Rand von 20,10 in FrameLayout auszurichten, aber es erscheint oben links. Wo gehe ich falsch?Bildansicht unten rechts in FrameLayout ausrichten

ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(refreshBtn.getLayoutParams()); 
    marginParams.setMargins(0, 0, 20, 10); 
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(marginParams); 
layoutParams.gravity=Gravity.RIGHT|Gravity.BOTTOM; 
refreshBtn.setLayoutParams(layoutParams); 
+0

Können Sie Ihren Code schreiben? Genauer gesagt, das XML, mit dem Sie arbeiten? – FabioR

Antwort

0

Das Problem ist, dass Sie das Layout der Schwerkraft ändern, was bedeutet, dass Sie in der rechten unteren Ecke des FrameLayout positionieren. Es ist jedoch möglich, dass das FrameLayout den gesamten Bildschirm ausfüllt. In diesem Fall ändert die Layout-Gravitation nichts wirklich. Stellen Sie sich ein Buch vor, das perfekt in eine Schublade passt. Egal, wie Sie die Schublade halten, das Buch bewegt sich nicht darin.

Was Sie tun müssen, ist die "setGravity()" Methode des FrameLayout selbst. Dies wird die tatsächliche Schwerkraft innerhalb des FrameLayouts ändern.

Quelle: How to set both gravity and layout gravity of a LinearLayout programatically

+0

Mein framelayout besteht aus vielen Ansichten und ich möchte nur diese Bildansicht nach unten rechts positionieren –

+0

Sind Sie sicher, dass Sie das ImageView dann programmatisch in die rechte untere Ecke stellen wollen? Es wäre einfacher mit XML in die rechte untere Ecke zu setzen. – IPat

+0

Ja, ich muss den Rand programmatisch entsprechend der Anforderung ändern –

Verwandte Themen