获得视图的边距

时间:2011-09-19 07:55:06

标签: android android-layout android-view

如何从活动中获取视图的边距值?视图可以是任何类型。

经过一些搜索后,我找到了填充视图的方法,但在边距上找不到任何内容。有人可以帮忙吗?

我尝试过这样的事情,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;

这样可行,但在上面的代码中我假设视图是LinearLayout。但即使我不知道视图类型,我也需要获取margin属性。

4 个答案:

答案 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和你的观点之间的空格。

  • #替换"左","右"," Top"或"底部"

获取/设置边距对我有用:

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

当然,我的View确实是一个ViewGroup,父也是一个ViewGroup。在大多数情况下,您应该将布局参数转换为父级的View类LayoutParams(在本例中为ViewGroup和RelativeLayout)