如何从活动中获取视图的边距值?视图可以是任何类型。
经过一些搜索后,我找到了填充视图的方法,但在边距上找不到任何内容。有人可以帮忙吗?
我尝试过这样的事情,
ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
这样可行,但在上面的代码中我假设视图是LinearLayout
。但即使我不知道视图类型,我也需要获取margin
属性。
答案 0 :(得分:170)
试试这个:
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
答案 1 :(得分:29)
尝试
ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()
vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin
这至少为我的观点返回了正确的边距。
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
答案 2 :(得分:4)
现在使用此编辑的代码。这会对你有所帮助
FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();
lp.leftMargin // for left margin
lp.rightMargin // for right margin
答案 3 :(得分:2)
正如其他人所说,layout_margin#是父&#s#edge和你的观点之间的空格。
获取/设置边距对我有用:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();
当然,我的View确实是一个ViewGroup,父也是一个ViewGroup。在大多数情况下,您应该将布局参数转换为父级的View类LayoutParams(在本例中为ViewGroup和RelativeLayout)