Android 获取9补丁内容区域的大小
在我的应用程序中,我有一个功能,你可以在图像周围放置一个框架 我使用Android 获取9补丁内容区域的大小,android,nine-patch,Android,Nine Patch,在我的应用程序中,我有一个功能,你可以在图像周围放置一个框架 我使用setBackground(可绘制)将框架的图像应用于ImageView。单击ImageView时,我想将内容区域(帧中包含的图像)放大到屏幕大小。为此,我需要知道整个视图和内容区域之间的差异,即边框的厚度 有没有办法获得内容区域的大小?(访问ImageView的View.getWidth()将提供内容+边框。我正在尝试获取边框/填充。) 这里有一种替代方法: 9patch框架的水平和垂直边界不应分别垂直和水平拉伸。所以,垂直边
setBackground(可绘制)
将框架的图像应用于ImageView
。单击ImageView
时,我想将内容区域(帧中包含的图像)放大到屏幕大小。为此,我需要知道整个视图和内容区域之间的差异,即边框的厚度
有没有办法获得内容区域的大小?(访问ImageView的View.getWidth()
将提供内容+边框。我正在尝试获取边框/填充。)
这里有一种替代方法: 9patch框架的水平和垂直边界不应分别垂直和水平拉伸。所以,垂直边框的宽度和水平边框的高度是恒定的。您可以使用任何支持测量和测量这些长度的图像编辑器打开9patch
将这些值用作内容视图的边距或填充。为所有DPI提供一个9补丁应该可以工作,因为系统会将其拉伸以获得更高的DPI,但您的填充/边距将以DPs为单位,因此它应该与帧大小相同。这里有一种替代方法: 9patch框架的水平和垂直边界不应分别垂直和水平拉伸。所以,垂直边框的宽度和水平边框的高度是恒定的。您可以使用任何支持测量和测量这些长度的图像编辑器打开9patch 将这些值用作内容视图的边距或填充。为所有DPI提供一个9补丁应该可以工作,因为系统会将其拉伸以获得更高的DPI,但您的填充/边距将以DPs为单位,因此它应该与帧大小相同。您可以使用:
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方法将返回可绘制补丁的插入,您可以使用:
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方法将返回可绘制的replaceview.getWidth()
withview.getMeasuredHeight()
。replaceview.getWidth()
withview.getMeasuredHeight()
。