Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 9贴片图像在错误位置缩放_Android_Image_Scaling_Nine Patch - Fatal编程技术网

Android 9贴片图像在错误位置缩放

Android 9贴片图像在错误位置缩放,android,image,scaling,nine-patch,Android,Image,Scaling,Nine Patch,我正在使用一个九块图像作为选择器项目元素的可绘制图像。 九块补丁的图像如下所示: 最终渲染的图像如下(emulator和设备屏幕截图,两个设备的分辨率均大于mdpi): 如您所见,它已在可拉伸区域(如9面片文件中所定义)之外进行缩放,深绿色条的厚度应比它的厚度大得多。 这是为什么?它可以避免吗?draw9patch工具可正确缩放此图像。这与Android试图在高分辨率设备上保留物理尺寸有关吗?您是否只提供mdpi版本的图像 Android缩放所有像素密度不正确的图像。这发生在通过9patch

我正在使用一个九块图像作为选择器项目元素的可绘制图像。 九块补丁的图像如下所示:

最终渲染的图像如下(emulator和设备屏幕截图,两个设备的分辨率均大于mdpi):

如您所见,它已在可拉伸区域(如9面片文件中所定义)之外进行缩放,深绿色条的厚度应比它的厚度大得多。
这是为什么?它可以避免吗?draw9patch工具可正确缩放此图像。这与Android试图在高分辨率设备上保留物理尺寸有关吗?

您是否只提供mdpi版本的图像

Android缩放所有像素密度不正确的图像。这发生在通过9patch缩放图像之前

这意味着您的图像将按比例放大以适应hdpi,然后按比例放大以适应内容


要解决这个问题,您必须提供图像的hdpi和xhdpi版本。9patch不应该针对不同的像素密度和不同的内容/屏幕大小。

我查看了您的9补丁:

你为什么把没用过的衣服涂成白色?它应该是透明的。 因此,它未被识别为9Patch:


让我们看一下您绘制图像的代码。白色边框是我个人的最佳做法,因为它避免了几乎透明的像素出现在外部边框上。到目前为止,我从来没有遇到过这个问题。我仔细检查了一下:红色条纹(不管它们是什么意思)也有完全透明的边框。只有一个版本(放在可绘制文件夹中)。看来你概述的过程解释了我面临的问题。太糟糕了,我想我也可以避免为所有这些不同的物理分辨率创建图像。。。