Android: Context.getDrawable()

2022-08-31 11:18:37

我在我的项目中使用过这样的:context.getDrawable()

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

但是Eclipse给了我一个错误,它需要一个.这意味着在快速谷歌搜索后,我的APP只能在上使用。由于并非所有设备都使用此版本的Android,因此我希望有一个替代方案。Minimum API level of 21Android 5.0context.getDrawable()


答案 1

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

在android.os.Build.VERSION_CODES#JELLY_BEAN之前,如果此处传递的资源 ID 是另一个可绘制资源的别名,则此函数将无法正确检索最终配置密度。这意味着,如果别名资源的密度配置与实际资源不同,则返回的 Drawable 的密度将不正确,从而导致缩放错误。

正如这个答案中指出的那样,更好的解决方案是使用 ContextCompatContextCompat.getDrawable(context, R.drawable.***)


答案 2

在上下文后添加一个:getResources()

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

推荐