Android / 9-patch PNG:如果我需要像11-patch PNG那样的smth?

在Draw 9-patch中,一切看起来都很好。 但是 ,我的SDK说9补丁png格式不正确。 因为我有一个像11补丁png的东西。 因为我不希望缩小抓取区域。 如何让它工作? 截图描述了一切:

替代文字

控制台中的错误消息:

ERROR: 9-patch image /res/drawable-hdpi/top_complete.9.png malformed. Can't have more than one marked region along edge. Found at pixel #10 along bottom edge. ERROR: Failure processing PNG image /res/drawable-hdpi/top_complete.9.png 

Solutions Collecting From Web of "Android / 9-patch PNG:如果我需要像11-patch PNG那样的smth?"

我相信你的问题是你将内容区域分成两部分是不允许的。 工具对顶部和左边框的处理方式与底部和右边框的处理方式不同。 顶部和左侧描述了可伸展的内容,底部和右侧定义了内容区域(必须是连续的)。

选中checkbox以显示内容区域并使用它来查看我正在谈论的内容。

替代文字

我不会将它分成左右两侧,我会删除9补丁中的==并将其用作具有中心和底部重力的单独图像,以便始终保持在您想要的中间位置。

只是一个提示:我总是将“缩放”部分缩小到1像素宽度/高度,以获得最小化的图像。

替代文字

没有抓取器的9-Patch PNG

替代文字

按钮的XML:

  

Padding和sp-Values的使用是否正常?

由于原始问题尚未解决:您可以将图像分成两层,一个用于可伸展部分的NinePatchDrawable和一个用于静态图像的实心(居中)。 然后只需使用LayerDrawable将它们绘制在彼此之上。 以下是如何使用适当的标记的一个很好的示例。 这是如何以正确的方式做到这一点。 😉

将原始图像分成两部分并使用它们。

上面的图像看起来很好,预览显示它看起来很好。

当您尝试使用它时,设备的错误消息是什么?

你确定边缘上的每个像素都是完全白色还是黑色?
即使是最微小的边缘透明度也会让Android感到不安。


编辑:
啊哈,错误信息揭示了问题。
只有图像的边缘才能确定要拉伸的区域。

删除底部边缘的黑色像素,假设这只是一个内部没有内容(例如文本)的抓取条。

否则,只需填写底边的中央间隙,即可在紫色区域显示文本内容。

查看所有边框…顶部和左侧两个(将缩放),右侧和底部一个(不会缩放)。

在此处输入图像描述