97

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

经过一番搜索,我找到了填充视图的方法,但在 Margin 上找不到任何东西。任何人都可以帮忙吗?

我尝试过这样的事情,

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

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

4

4 回答 4

183

尝试这个:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();

边距可通过

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

编辑: 也许ViewGroup.MarginLayoutParams会为你工作。它是 other 的基类LayoutParams

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html

于 2011-09-19T08:09:10.900 回答
35

尝试

ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()

vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin

这至少为我的观点带来了正确的利润。

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html

于 2011-10-28T09:42:06.337 回答
5

现在使用这个编辑过的代码。这会帮助你

FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin
于 2011-09-19T08:26:51.990 回答
3

正如其他人所建议的那样, layout_margin# 是父级的 # 边缘和您的视图之间的空间。

  • # 替换“左”、“右”、“上”或“下”

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

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

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

于 2014-05-05T12:11:42.110 回答