Answers:
试试这个:
View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();
可以通过以下方式访问边距
lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;
编辑:
也许ViewGroup.MarginLayoutParams
会为您工作。这是其他类的基类LayoutParams
。
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
办
尝试
ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()
vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin
这至少返回了我认为正确的保证金。
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
现在使用此编辑后的代码。这会帮助你
FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();
lp.leftMargin // for left margin
lp.rightMargin // for right margin
LinearLayout
以horizontal
方向放置。如果它是布局中的第二个视图,则该view.getLeft()
方法将为我提供其左视图的坐标,但是是其相邻视图的视图的左边界。
LinearLayout
怎么办?
就像其他人建议的那样,layout_margin#是父级的#边缘和您的视图之间的空间。
获得/设置利润对我有用:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();
当然,我的View确实是一个ViewGroup,父级也是一个ViewGroup。在大多数情况下,应将布局参数转换为父级的View类LayoutParams(在这种情况下为ViewGroup和RelativeLayout)
LayoutParams
。有FrameLayout.LayoutParams
,,之类的类,RelativeLayout.LayoutParams
但LayoutParams
本身没有类似的类。而且由于我不知道视图的类型,因此无法使用任何以前的类。