我成功地在Android 3.0+上使用Brian Griffey提供的绝妙代码片段(在这里找到)动态构建了一个9patch可绘制对象。
基本上,我从网络中加载原始(无补丁)图像文件,并且文件名包含我需要使用的插入区域来按比例缩放图像。然后,我使用上面找到的类与这些值,并将图像应用为各种元素的背景(例如
基本上,我从网络中加载原始(无补丁)图像文件,并且文件名包含我需要使用的插入区域来按比例缩放图像。然后,我使用上面找到的类与这些值,并将图像应用为各种元素的背景(例如
TextView , ImageButton , Button , ViewGroup 等)。
正如您在此处所看到的,这完美地运行:
![Android 3.0+ result](https://istack.dev59.com/KFiP6.webp)
然而,在Android 2.3.x上运行相同的代码会产生以下结果:
![Android 2.x result](https://istack.dev59.com/rlLQ8.webp)
我已经查看了Android用于解析9patch图像的源代码(这里和这里),但是没有找到使其正常工作的方法。我尝试了几乎所有可以想到的方法,但都无济于事。
记录一下,9patch图像在每个轴上有三列,一个固定的、一个可伸缩的和一个固定的。
希望有人在此之前解决了这个问题。
提前感谢。
编辑 我只对在Android 2.3及以上版本上复制此行为感兴趣(最初是2.x)。
编辑 #2 这个要点描述了 我正在尝试做的事情 + 源图像:
编辑 #3 图像大小为 22px/58px(宽度/高度),插入值为 14/6/14/6(上/左/下/右)。
NinePatchDrawable
,然后我将其设置为TextView
的背景。 - AndreDrawable.setBounds()
是否与这个问题有关。 - a.bertucci