获取9补丁内容区域的大小

时间:2014-03-18 16:15:58

标签: android nine-patch

在我的应用中,我有一个功能,您可以在图像周围放置一个框架。

我使用setBackground(Drawable)将帧的图像应用于ImageView。单击ImageView时,我想将内容区域(框架中包含的图像)吹到屏幕大小。为此,我需要知道整个视图和内容区域之间的差异,即边框的厚度。

有没有办法获得内容区域的大小? (访问ImageView的View.getWidth()会给出内容+边框。我正在尝试获取边框/填充。)

frame

2 个答案:

答案 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,所以它应该与帧相同。