Wie kann ich den Randwert einer Ansicht aus einer Aktivität abrufen? Die Ansicht kann von einem beliebigen Typ sein.
Nach einigem Suchen fand ich heraus, wie ich eine Ansicht auffüllen kann, konnte aber auf Margin nichts finden. Kann jemand helfen?
Ich habe so etwas versucht,
ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
Dies funktioniert, aber im obigen Code habe ich die Ansicht als a angenommen LinearLayout
. Aber ich muss das margin
Attribut auch dann abrufen, wenn ich den Ansichtstyp nicht kenne.
android
android-layout
android-view
Arnab Chakraborty
quelle
quelle
LayoutParams
. Es gibt Klassen wieFrameLayout.LayoutParams
,RelativeLayout.LayoutParams
aber nichts wieLayoutParams
an sich. Und da ich den Typ der Ansicht nicht kenne, kann ich keine der früheren Klassen verwenden.ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
dann?Versuchen
Dies ergab zumindest die richtigen Margen für meine Ansicht.
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
quelle
Verwenden Sie jetzt diesen bearbeiteten Code. das wird dir helfen
quelle
LinearLayout
mithorizontal
Ausrichtung platziert werden. Wenn es die zweite Ansicht im Layout istview.getLeft()
, gibt mir die Methode die Koordinate der linken, aber den linken Rand der Ansicht aus der angrenzenden Ansicht.LinearLayout
?Wie andere vorgeschlagen haben, ist layout_margin # der Abstand zwischen der # Kante des Elternteils und Ihrer Ansicht.
Das Erhalten / Festlegen von Margen funktionierte für mich mit:
Natürlich war meine Ansicht tatsächlich eine ViewGroup und die übergeordnete war auch eine ViewGroup. In den meisten Fällen sollten Sie Ihre Layoutparameter in die View-Klasse LayoutParams des übergeordneten Elements umwandeln (in diesem Fall ViewGroup und RelativeLayout).
quelle