其他分享
首页 > 其他分享> > android – 动态设置9patch背景

android – 动态设置9patch背景

作者:互联网

有没有人试图动态设置9Patch背景的按钮?如果重要,则按钮的宽度和高度设置为wrap_content

如果是的话,你是如何解决“黑线”问题的?

谢谢

解决方法:

如果您看到在9补丁图像上绘制的黑点,那是因为您尚未预编译图像.

要在运行时将9补丁图像设置为背景,必须先将它们编译,然后删除边框并将其编码为PNG块.

您可以通过将.9.png图像插入应用程序的res / drawable文件夹,编译它并生成.apk(在Eclipse上,右键单击项目根目录> Android工具>导出未签名的应用程序包)来实现. .然后解压缩.apk,你将获得带有9补丁编译数据的.9.png图像.

使用预编译的9补丁图像,执行类似的操作来加载图像:

private Drawable loadNinePatch(String path, Context context) {
        Bitmap bitmap = BitmapFactory.decodeFile(path);
        byte[] chunk = bitmap.getNinePatchChunk();
        if(NinePatch.isNinePatchChunk(chunk)) {
            return new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null);
        } else return new BitmapDrawable(bitmap);
}

然后将其设置为按钮的背景:

button.setBackgroundDrawable(loadNinePatch("/data/data/your.app/files/button_background.9.png", context));

标签:android,button,background,nine-patch
来源: https://codeday.me/bug/20190620/1248097.html