Android/9-patch PNG:如果我需要smth,比如11-patch PNG,怎么办?

Android/9-patch PNG:如果我需要smth,比如11-patch PNG,怎么办?,android,android-layout,nine-patch,Android,Android Layout,Nine Patch,在Draw 9-patch中,一切看起来都很好然而,我的SDK说9-patch 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. F

在Draw 9-patch中,一切看起来都很好然而,我的SDK说9-patch 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

将原始图像一分为二并使用它们。

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

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

您确定边缘上的每个像素都是完全白色或黑色的吗?
即使边缘上有一点点透明也会让安卓感到不安


编辑:
啊哈,错误消息揭示了问题。
图像的大小决定将拉伸哪些区域

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


否则,只需填充底部边缘的中间间隙,以便文本内容可以显示在紫色区域。

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

选中复选框以显示内容区域,并使用它查看我在说什么


< P>我不会把它分成左右两个,我会在9个补丁中删除它=============================================================================== 只是一个提示:我总是将“缩放”部分的宽度/高度减少到1像素,以获得最小化的图像。

不带抓取器的9-补丁PNG

按钮的XML格式:

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="#FFFFFF"
  android:textStyle="bold"
  android:textSize="11sp"
  android:id="@+id/ButtonTop"
  android:background="@drawable/top_just_bg"
  android:drawableBottom="@drawable/top_dropper"
  android:gravity="center"
  android:paddingLeft="15sp"
  android:paddingRight="15sp"
  android:paddingTop="3sp"
  android:text="There we go! It's working... ;)"></Button>


填充和sp值的使用是否正确

由于原始问题尚未解决:您可以将图像分为两层,一层用于可拉伸部分,另一层(居中)用于静态图像。然后用a把它们画在一起。是如何使用适当的
标记的一个很好的示例。这就是正确的方法

查看所有边界。。。两个位于顶部和左侧(将缩放),一个位于右侧和底部(将不缩放)


我想使用元素“Button”并将文本(其长度可以更改)放在该按钮的顶部。此按钮必须随文本拉伸到一定宽度。刚才我分割了图像,并将左侧指定为“drawable left”,另一侧指定为“drawable left”。但如果它不被打断,我会调查的。我将发布我的成功;)@你的提示:这是对的,但只有当你的梯度只在一个方向上时才可行。。。期待您的解决方案!我认为他只是在9-patch的内容区域(底部和右侧区域)有一个错误。他想做的事应该是可能的。如果他只做了9次补丁,那就更为合理了。我还考虑了MrielHelt的答案,我没有测试过,因为我的解决方案非常有效。我标记我的答案,因为它完全符合问题。谢谢大家!我很想知道你是否接受了我的建议?我几乎可以肯定你可以很容易地完成你最初想要的。这个答案也很好,但最好使用colithium的答案。在你的原始图片中,连接底部的两个线段。就这样。就像我说的,底线指定的是内容区域,而不是可拉伸区域。它也在工作,而且更加健壮。现在我真的明白了,正确的底线意味着什么。我读得不够仔细。这是一个非常容易犯的错误。我只是碰巧在不久前读过那份文件。我还得看哪一边是哪一边(尽管如此:)