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

时间:2016-07-22 11:32:08

标签: android

有问题!在API 22中不推荐使用getDrawable()。因此,如果我使用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 个答案:

答案 0 :(得分:4)

你可以使用

yourImageView.setImageDrawable(ContextCompat.getDrawable(context, /*your drawable like R.drawable.drawableName*/));

答案 1 :(得分:0)

你可以这样试试,

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

可以帮助你

答案 2 :(得分:0)

我的项目似乎有一个错误,但我无法识别它。如果我尝试其他项目,它适用于上述任何答案。