Frage Erhalten Sie den Rand einer Ansicht


Wie kann ich den Margin-Wert einer View von einer Aktivität erhalten? Die Ansicht kann von jedem Typ sein.

Nach einigem Suchen habe ich herausgefunden, wie man eine Ansicht füllen kann, konnte aber nichts auf Margin finden. Kann jemand helfen?

Ich habe so etwas probiert,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;

Das funktioniert, aber im obigen Code habe ich die Ansicht angenommen, ein LinearLayout. Aber ich muss das bekommen margin Attribut, auch wenn ich den Ansichtstyp nicht kenne.


76
2017-09-19 07:55


Ursprung


Antworten:


Versuche dies:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();

Ränder sind über erreichbar

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

bearbeiten: vielleicht ViewGroup.MarginLayoutParams wird für dich arbeiten. Es ist eine Basisklasse für andere LayoutParams.

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


148
2017-09-19 08:09



Versuchen

ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()

vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin

Dies hat zumindest die korrekten margains für meine Ansicht zurückgegeben.

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


25
2017-10-28 09:42



benutze jetzt diesen bearbeiteten Code. das wird dir helfen

FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin

4
2017-09-19 08:26



Wie andere vorgeschlagen haben, ist layout_margin # der Abstand zwischen der # Kante des Elternteils und Ihrer Ansicht.

  • # ersetzt "Links", "Rechts", "Oben" oder "Unten"

Das Erreichen / Einstellen der Ränder funktionierte für mich mit:

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();

Natürlich war meine Ansicht in der Tat eine ViewGroup und der Elternteil war auch eine ViewGroup. In den meisten Fällen sollten Sie Ihre Layoutparameter an die View-Klasse LayoutParams des übergeordneten Elements übergeben (in diesem Fall ist es ViewGroup und RelativeLayout).


2
2018-05-05 12:11