96 votes

Obtenir la marge d'une vue

Comment puis-je obtenir la valeur de la marge d'une vue à partir d'une activité ? La vue peut être de n'importe quel type.

Après quelques recherches, j'ai trouvé des moyens de faire disparaître une vue, mais je n'ai rien trouvé sur Margin. Quelqu'un peut-il m'aider ?

J'ai essayé quelque chose comme ça,

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

Cela fonctionne, mais dans le code ci-dessus j'ai supposé que la vue était une LinearLayout . Mais j'ai besoin d'obtenir le margin même si je ne connais pas le type de vue.

182voto

Vladimir Points 4310

Essayez ceci :

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

Les marges sont accessibles via

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

éditer : peut-être ViewGroup.MarginLayoutParams fonctionnera pour vous. C'est une classe de base pour les autres LayoutParams .

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

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

35voto

Freddman Points 1759

Essayez

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

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

Cela a permis d'obtenir des marges correctes, du moins à mon avis.

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

5voto

ilango j Points 3314

Maintenant utilisez ce code édité. cela vous aidera

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

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

3voto

milosmns Points 41

Comme d'autres l'ont suggéré, layout_margin# est l'espace entre le bord du parent # et votre vue.

  • # remplace "Gauche", "Droite", "Haut" ou "Bas".

Obtenir/régler les marges a fonctionné pour moi avec :

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

Bien sûr, ma vue était effectivement un ViewGroup et le parent était également un ViewGroup. Dans la plupart des cas, vous devez convertir vos paramètres de disposition en paramètres de disposition de la classe View du parent (dans ce cas, il s'agit de ViewGroup et de RelativeLayout).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X