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 

  • 是否有适用于iPhone的九贴片装载机?
  • 9-Patch文件中的错误'补丁'
  • 如果我应用背景,如何在EditText上返回默认样式?
  • 如何在Photoshop中创建9个补丁? 什么是9.png编码?
  • 我相信你的问题是你将内容区域分成两部分是不允许的。 工具对顶部和左边框的处理方式与底部和右边框的处理方式不同。 顶部和左侧描述了可伸展的内容,底部和右侧定义了内容区域(必须是连续的)。

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

    替代文字

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

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

    替代文字

    没有抓取器的9-Patch PNG

    替代文字

    按钮的XML:

      

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

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

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

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

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

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


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

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

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

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

    在此处输入图像描述