How can I get the margin value of a View from an Activity? The View can be of any type.
After a bit of searching I found out ways to get padding of a view, but couldn’t find anything on Margin. Can anyone help?
I tried something like this,
ViewGroup.LayoutParams vlp = view.getLayoutParams(); int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
This works, but in the above code I have assumed the view to be a
LinearLayout. But I need to get the
margin attribute even when I don’t know the view type.
View view = findViewById(...) //or however you need it LayoutParams lp = (LayoutParams) view.getLayoutParams();
margins are accessible via
lp.leftMargin; lp.rightMargin; lp.topMargin; lp.bottomMargin;
ViewGroup.MarginLayoutParams will work for you. It’s a base class for other
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams() vlp.rightMargin vlp.bottomMargin vlp.leftMargin vlp.topMargin
This returned the correct margains for my view atleast.
now use this edited code. this will help you
FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams(); lp.leftMargin // for left margin lp.rightMargin // for right margin
As others suggested, layout_margin# is the space between the parent’s # edge and your view.
- # replaces “Left”, “Right”, “Top” or “Bottom”
Getting/setting margins worked for me with:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.topMargin += 20; mView.requestLayout();
Of course, my View was indeed a ViewGroup and the parent was a ViewGroup as well. In most cases, you should cast your layout params to the parent’s View class LayoutParams (in this case it’s ViewGroup and RelativeLayout)