Android:context.getDrawable()的替代方法

我在我的项目中使用了context.getDrawable()

 Drawable greenProgressbar = context.getDrawable(R.drawable.custom_progressbargreen); 

但是,Eclipse给我一个错误,它需要一个Minimum API level of 21 。 这意味着经过快速的谷歌search我的APP只能在Android 5.0 。 由于不是所有的设备都使用这个版本的Android我想有一个替代context.getDrawable()

根据SDK 22文档,以前接受的方法已被弃用。

在android.os.Build.VERSION_CODES#JELLY_BEAN之前,当传入的资源ID是另一个Drawable资源的别名时,此函数将无法正确检索最终configuration密度。 这意味着如果别名资源的密度configuration与实际资源不同,则返回的Drawable的密度将不正确,导致缩放不正确。

正如在这个答案中指出的更好的解决scheme将是使用ContextCompat : ContextCompat.getDrawable(context, R.drawable.***)

尝试在上下文之后添加一个getResources() ,所以这个:

 Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen); 

应该pipe用。

我有一个相同的情况,我想引用getDrawable()方法,现在已经弃用。

我用什么,

 myButton.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_btn_off)); 

希望对你有帮助

我以前有过类似的问题。 你有没有试过这样做?

 Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen); 

尝试这个:

 AppCompatResources.getDrawable(context, R.drawable.*)