web-dev-qa-db-fra.com

Obtenir la marge d'une vue

Comment puis-je obtenir la valeur de la marge d'une vue d'une activité? La vue peut être de tout type.

Après un peu de recherche, j'ai trouvé des moyens d'obtenir un remplissage de vue, mais je n'ai rien trouvé sur Margin. Quelqu'un peut-il 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 un LinearLayout. Mais je dois obtenir l'attribut margin même quand je ne connais pas le type de vue.

92
Arnab Chakraborty

essaye ça:

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 travaillera 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

172
Vladimir

Essayer

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

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

Cela a retourné les marges correctes pour mon point de vue au moins.

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

30
Freddroid

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
4
ilango j

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

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

Obtenir/établir des marges a fonctionné pour moi avec:

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

Bien sûr, ma vue était en effet un groupe de vues et le parent était également un groupe de vues. Dans la plupart des cas, vous devez convertir vos paramètres de présentation dans la classe View du parent de la classe View (dans ce cas, ViewGroup et RelativeLayout).

3
milosmns