当前位置: 首页 > 知识库问答 >
问题:

不推荐使用getDrawable(int-id)。如何设置图像?

时宾实
2023-03-14

有一个问题!getDrawable()在API 22中被弃用。那么,如果我用min API 16制作一个应用程序,我如何设置图像?

我看到我可以使用getDrawable(int-id,theme),但这是在API 21中添加的,所以我不能使用它。

我尝试了setImageDrawable(ResourcesCompat.getDrawable(getResources(),R.drawable)。drawableName,null))但这也不起作用。对于ContextCompat或getApplicationContext(),它也不起作用。

private ImageView weatherIcon;
weatherIcon=(ImageView)findViewById(R.id.weatherIcon);
if(weatherReportList.size()>0){
            DailyWeatherReport report=weatherReportList.get(0);
            switch (report.getWeather()){
                case DailyWeatherReport.WEATHER_TYPE_CLOUDS:
                    weatherIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.cloudy, null));
                    weatherIconMini.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.cloudy, null));
                case DailyWeatherReport.WEATHER_TYPE_RAIN:
                    weatherIcon.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.rainy));
                    weatherIconMini.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.rainy, null));

                default:
                    weatherIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.sunny, null));
                    weatherIconMini.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.sunny, null));


            }

这不是那篇文章的复制品。我已经尝试了那里的所有方法,但都不起作用。

共有3个答案

符献
2023-03-14

我的项目似乎有一个bug,但我无法识别它。如果我尝试其他项目,它与上述任何答案都有效。

段干飞翮
2023-03-14

你可以这样试试,

 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    return context.getResources().getDrawable(resource);
} else {
    return context.getResources().getDrawable(resource, null);
}

可能对你有帮助

宋望
2023-03-14

您可以使用

yourImageView.setImageDrawable(ContextCompat.getDrawable(context, /*your drawable like R.drawable.drawableName*/));
 类似资料:
  • 问题内容: 我的Java代码中有一些不推荐使用的方法,如果有人可以在这里指导我,我将不胜感激。我有一个私有的Date变量: 在我的方法中,我声明了: 其他方法(例如和)也已弃用。 我知道我必须使用。如何在这里使用新代码?所有的setHours,getMinutes等都用上划线显示。 问题答案: 如果我正确理解了您的问题,这应该可以: 如果没有,您可以向我们显示要替换日期代码的完整方法吗? 编辑:这

  • 问题内容: 我有以下使用函数在PHP 5.3之前运行良好的语句: 升级到PHP 5.3后,我收到了不赞成使用的警告: 不推荐使用:不推荐使用split()函数。 我正在尝试解析具有以下格式的字符串: 2010-08-10 23:07:58 成为其组成部分。 问题答案: 我认为您想要preg_split。

  • 但是,如果我尝试从命名包导入,我会得到一个错误,即无法解析。 你有没有一个想法,在gradle中应该包括什么包来解决这个问题?

  • 问题内容: 我收到此警告,但是该程序仍然可以正常运行。 MySQL代码向我显示了一条PHP消息: 不推荐使用:mysql_connect():不推荐使用mysql扩展,以后将被删除:在第2行的C:\ xampp \ htdocs \ task \ media \ new \ connect.inc.php中使用mysqli或PDO代替 我的页面是 这是什么意思,我该如何消除该消息? 问题答案: 有

  • 问题内容: 我正在尝试使用和进行单元测试。 当我不包含注释时,测试将失败。但 不推荐使用MockitoJUnitRunner类型 我正在使用Mockito 2.6.9。我应该怎么做? 问题答案: 现在确实已弃用,应该改为使用。如您所见,仅软件包名称已更改,该类的简单名称仍为 。 摘录自javadoc : 移至,该课程将在Mockito 3中删除

  • 新的侦听器(又名OnCameraMoveListener())方法onCameraMove()没有CameraPosition CameraPosition输入变量,所以我很迷惑:有没有方法回收我的旧代码? 这里有一些参考资料。