我需要有关 NinePatchDrawable 的帮助:
我的应用程序可以从网络下载主题。除了 9-Patch PNG 之外,几乎所有东西都可以正常工作。
final Bitmap bubble = getFromTheme("bubble");
if (bubble == null) return null;
final byte[] chunk = bubble.getNinePatchChunk();
if (!NinePatch.isNinePatchChunk(chunk)) return null;
NinePatchDrawable d = new NinePatchDrawable(getResources(), bubble, chunk, new Rect(), null);
v.setBackgroundDrawable(d);
d = null;
System.gc();
getFromTheme() 从 SD 卡加载位图。9-Patch PNG 已经编译,这意味着它们包含所需的块。
我如何将位图转换为 NinePatchDrawable 对象的方式似乎很有效,因为图像是可拉伸的,就像我绘制它一样。
唯一不起作用的是填充。我已经尝试将填充设置为这样的视图:
final Rect rect = new Rect(); // or just use the new Rect() set
d.getPadding(rect); // in the constructor
v.setPadding(rect.left, rect.top, rect.right, rect.bottom);
d.getPadding(rect) 应该用从块中获得的填充填充变量 rect,不是吗?但事实并非如此。
结果:TextView (v) 未在 9-Patch 图像的内容区域中显示文本。每个坐标中的填充设置为 0。
谢谢阅读。