获取视图的边缘

我怎样才能从一个活动获得视图的保证金值? 视图可以是任何types的。

经过一番search后,我find了一种方法来获得一个视图的填充,但无法find任何保证金。 谁能帮忙?

我尝试了这样的事情

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

这工作,但在上面的代码中,我已经认为是一个LinearLayout视图。 但是,即使我不知道视图types,我也需要获得margin属性。

尝试这个:

 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 vlp = (MarginLayoutParams) view.getLayoutParams() vlp.rightMargin vlp.bottomMargin vlp.leftMargin vlp.topMargin 

这至less为我的观点返回了正确的余地。

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 

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

  • #代替“左”,“右”,“顶”或“底”

通过以下方式获取/设置保证金:

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

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