Android / 9补丁PNG:什么,如果我需要像11补丁PNG那样的smth?

时间:2010-09-17 07:37:11

标签: android android-layout nine-patch

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

alt text

控制台中的错误消息:

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

7 个答案:

答案 0 :(得分:33)

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

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

alt text

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

alt text

没有抓取器的9-Patch PNG

alt text

Button的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>

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

上面的图片看起来很好,预览显示它看起来还不错。

尝试使用设备时,设备出现的错误消息是什么?

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


修改
啊哈,错误信息揭示了这个问题 图像的Only the top edge确定将拉伸哪些区域。

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

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

答案 6 :(得分:0)

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

enter image description here