如何移除Picasso加载的蓝/绿/红三角?调用setIndicatorsEnabled报错
setIndicatorsEnabled()方法找不到的问题 嘿,我来帮你搞定这个困扰!你遇到的Cannot resolve method 'setIndicatorsEnabled(boolean)'错误,核心原因是在Picasso 2.x的稳定版本(比如你用的2.71828)里,这个方法根本不是通过Picasso.get()获取的实例来调用的——它属于Picasso.Builder的配置方法,而且默认的全局Picasso实例本来就不会显示那三个颜色的调试三角(蓝/绿/红)。
为什么会出现这个错误?
Picasso的调试指示器(就是你看到的角落三角)只有在你手动通过Picasso.Builder构建实例并开启指示器时才会显示。默认的Picasso.get()获取的是无调试配置的全局实例,本身就没有这个方法,所以直接调用肯定会报错。
正确的解决方法
根据你的场景,分两种情况处理:
1. 如果你是自定义构建了Picasso实例
如果之前你是用Builder创建的Picasso(可能开启了指示器),那要在Builder阶段关闭它:
// 构建自定义Picasso实例并关闭指示器 Picasso picasso = new Picasso.Builder(context) .indicatorsEnabled(false) // 在这里设置关闭调试指示器 .build(); // 用这个实例加载图片 picasso.load(img.getImage()) .placeholder(android.R.drawable.ic_menu_gallery) .into(holder.imageView);
如果想全局生效,可以把这个实例设置为单例:
Picasso.setSingletonInstance(picasso); // 之后用Picasso.get()调用就会使用这个配置好的实例了 Picasso.get() .load(img.getImage()) .placeholder(android.R.drawable.ic_menu_gallery) .into(holder.imageView);
2. 如果你一直用默认的Picasso.get()
那默认情况下指示器是关闭的,你看到的三角可能来自其他库(比如Glide的调试指示器),或者项目里有其他地方偷偷初始化了带指示器的Picasso实例。建议排查一下项目中所有初始化Picasso的代码,看看是不是有地方用Builder开启了indicatorsEnabled(true)。
补充说明
记住:在Picasso 2.x版本中,indicatorsEnabled()是Picasso.Builder的方法,不是Picasso实例的方法,所以不能直接在Picasso.get()后面链式调用,这就是你报错的关键。
内容的提问来源于stack exchange,提问作者Android

