在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
答案 0 :(得分:33)
我相信您的问题是您将内容区域分成两部分,这是不允许的。工具对顶部和左边框的处理方式与底部和右边框的处理方式不同。顶部和左侧描述了可伸展的内容,底部和右侧定义了内容区域(必须是连续的)。
选中复选框以显示内容区域并使用它来查看我正在谈论的内容。
答案 1 :(得分:1)
我不会将它拆分为左右两边,我会删除9补丁中的==并将其用作具有中心和底部重力的单独图像,以便始终保持在您想要的中间位置
只是一个提示:我总是将“缩放”部分缩小到1像素宽度/高度,以获得最小化的图像。
答案 2 :(得分:1)
没有抓取器的9-Patch PNG
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)