【发布时间】:2013-05-06 17:46:08
【问题描述】:
我使用 Brian Griffey 提供的优秀 gist(发现 here)成功地在 Android 3.0+ 上运行时构建了一个 9patch 可绘制对象。
基本上我从网络加载原始(无补丁)图形文件,文件名包含我需要使用的 cap 插图,以便相应地缩放图像。然后我将这些值与上面找到的类一起使用,并将图像作为背景应用于各种元素(例如TextView、ImageButton、Button、ViewGroup 等)。
正如您在此处看到的那样,这非常有效:
但是,在 Android 2.3.x 上运行相同的代码会产生结果:
我查看了 Android 中用于解析 9patch 图像的源代码(here 和 here),但没有找到让它正常工作的方法。我已经尝试了几乎所有可以尝试的方法,但都无济于事。
据记录,9patch 由每个轴上的三列组成,一列固定,一列可拉伸,一列固定。
希望其他人以前解决过这个问题。
提前致谢。
编辑我只对在 Android 2.3 及更高版本(我最初有 2.x)上复制此行为感兴趣。
EDIT #2 这个要点描述了exactly what I'm trying to do + 源图片:
EDIT #3 图片尺寸为 22px/58px(宽/高),插图为 14/6/14/6(上/左/下/右)。 p>
【问题讨论】:
-
如何应用生成的9patch?
-
@mr_archano 我使用上面要点中的类,并将匹配我想要显示的图像的可缩放部分的 cap insets 传递给它。这会生成一个
NinePatchDrawable,然后我将其设置为TextView的背景。 -
好的,我明白了。我只是想知道
Drawable.setBounds()是否与此问题有关。 -
遗憾的是,情况似乎并非如此。不过感谢您的意见。
-
也许这个好人知道问题所在:@Brian Griffey。我不知道如何直接向某人提问,但你可以找出答案。
标签: android graphics bytearray nine-patch android-drawable