获得视图的边距

Arn*_*rty 93 android android-layout android-view

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

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

我试过这样的事,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*mir 173

试试这个:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

利润可以通过

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;
Run Code Online (Sandbox Code Playgroud)

编辑: 也许ViewGroup.MarginLayoutParams会对你有用.它是其他的基类LayoutParams.

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

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

  • 实际上我期待这样的东西,但我不认为有任何直接的类称为"LayoutParams".有类似`FrameLayout.LayoutParams`,`RelativeLayout.LayoutParams`的类,但它们本身并没有像'LayoutParams`那样.由于我不知道视图的类型,我不能使用任何以前的类. (7认同)
  • 怎么样`ViewGroup.MarginLayoutParams lp =(ViewGroup.MarginLayoutParams)view.getLayoutParams();`那么? (5认同)

Fre*_*oid 30

尝试

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

vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin
Run Code Online (Sandbox Code Playgroud)

这至少为我的观点返回了正确的边距.

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


ila*_*o j 5

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

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

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin
Run Code Online (Sandbox Code Playgroud)