如何使用代码而不是xml设置ImageView的边距


177

我想给ImageView边缘添加未知数量的视图。在XML中,我可以这样使用layout_margin

<ImageView android:layout_margin="5dip" android:src="@drawable/image" />

ImageView.setPadding(),但没有ImageView.setMargin()。我认为这是基于的思路ImageView.setLayoutParams(LayoutParams),但不确定该添加什么。

有人知道吗?

Answers:


381

android.view.ViewGroup.MarginLayoutParams有一种方法setMargins(left, top, right, bottom)。直子类是:FrameLayout.LayoutParamsLinearLayout.LayoutParamsRelativeLayout.LayoutParams

使用例如LinearLayout

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(left, top, right, bottom);
imageView.setLayoutParams(lp);

MarginLayoutParams

这以像素为单位设置边距。缩放使用

context.getResources().getDisplayMetrics().density

显示指标


18
请注意,这在PIXELS中设置了页边距大小,与该问题的xml中的dpi单位不同。
aromero 2012年

我们如何使用dpi值而不是像素?
PascalPiché2012年

10
您可以使用扩展context.getResources()的像素值getDisplayMetrics()密度。developer.android.com/reference/android/util/...
重点

1
请注意,有可能是有问题的FrameLayout.LayoutParams,也许其他:stackoverflow.com/questions/5401952/...
梅德Zaytsev

在情况下,我们想成立仅是图像视图的底部边缘android:layout_centerHorizontal = "true"android:layout_alignParentBottom = "true"在啥子办法可以做到这一点?
ssrp 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.