在我的应用中,我有一个功能,您可以在图像周围放置一个框架。
我使用setBackground(Drawable)
将帧的图像应用于ImageView
。单击ImageView
时,我想将内容区域(框架中包含的图像)吹到屏幕大小。为此,我需要知道整个视图和内容区域之间的差异,即边框的厚度。
有没有办法获得内容区域的大小? (访问ImageView的View.getWidth()
会给出内容+边框。我正在尝试获取边框/填充。)
答案 0 :(得分:3)
您可以使用:
Rect padding = new Rect();
view.getBackground().getPadding(padding);
int contentWidth = view.getWidth() - padding.left - padding.right;
int contentHeight = view.getHeight() - padding.top - padding.bottom;
如果你的背景是九个补丁,getPadding方法将返回drawable
的插图答案 1 :(得分:0)
这是另一种方法:
9patch框架的水平和垂直边框不应垂直和水平拉伸,分别。因此,您具有垂直边框的恒定宽度和水平边框的高度。您可以使用任何支持测量和测量长度的图像编辑器打开9patch。
将这些值用作内容视图的边距或填充。为所有DPI提供单个9patch应该可以工作,因为系统会为更高的DPI拉伸它,但你的填充/边距将是DP,所以它应该与帧相同。