Comment puis-je obtenir la valeur de 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 d'obtenir un remplissage d'une 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 j'ai besoin d'obtenir l' margin
attribut même si je ne connais pas le type de vue.
android
android-layout
android-view
Arnab Chakraborty
la source
la source
LayoutParams
. Il existe des classes commeFrameLayout.LayoutParams
,RelativeLayout.LayoutParams
mais rien de comparableLayoutParams
en soi. Et comme je ne connais pas le type de vue, je ne peux utiliser aucune des anciennes classes.ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
alors?Essayer
Cela a renvoyé les marges correctes pour ma vue au moins.
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
la source
utilisez maintenant ce code édité. cela t'aidera
la source
LinearLayout
avec l'horizontal
orientation. Si c'est la deuxième vue dans la mise en page, laview.getLeft()
méthode me donnerait la coordonnée de sa gauche mais la marge gauche de la vue depuis sa vue adjacente.LinearLayout
?Comme d'autres l'ont suggéré, layout_margin # est l'espace entre le bord # du parent et votre vue.
Obtenir / définir des marges a fonctionné pour moi avec:
Bien sûr, ma vue était en effet un ViewGroup et le parent était également un ViewGroup. Dans la plupart des cas, vous devez convertir vos paramètres de mise en page dans la classe de vue LayoutParams du parent (dans ce cas, il s'agit de ViewGroup et RelativeLayout)
la source