我遇到类似问题,例如,我正在从Web API下载图像并成功设置为imageview。我无法更改我下载的svg图像的颜色。 我在.java文件中尝试了xml中的tintColor和setFilterColor(),但对我来说没有任何用。 有什么解决方法吗,请对此帖回复。
public static void loadSvgWithColor(final Context context, String url, final int color, final ImageView target) {
if (httpClient == null) {
httpClient = new OkHttpClient.Builder()
.cache(new Cache(context.getCacheDir(), 5 * 1024 * 1014))
.build();
}
if (!url.equals("")) {
Request request = new Request.Builder().url(url).build();
httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
target.setImageResource(R.drawable.app_icon);
target.setColorFilter(color);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream stream = response.body().byteStream();
Sharp.loadInputStream(stream).into(target);
stream.close();
target.setColorFilter(color);
}
});
} else {
target.setImageResource(R.drawable.app_icon);
target.setColorFilter(color);
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您使用的Sharp库会生成一个List
并将其放入您的PictureDrawable
中。最后我检查了一下,ImageView
和android:tint
方法在PictureDrawables上不起作用。
我可以想到几种解决方案:
在渲染时使用Sharp的功能来更改颜色。在https://github.com/Pixplicity/sharp/blob/master/sample-imageview/src/main/java/com/pixplicity/sharp/imageviewdemo/SvgDemoActivity.java
使用其他库,例如我的AndroidSVG,可以在渲染时使用CSS为SVG设置样式。