Answers:
Drawable d = getResources().getDrawable(android.R.drawable.ic_dialog_email);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
getDrawable(int id)
不推荐使用。使用getDrawable(int id, Resources.Theme theme)
代替。该方法getTheme()
应该会有所帮助。
从API 21开始,应该使用getDrawable(int, Theme)
方法代替getDrawable(int)
,因为它允许您获取drawable
与resource ID
给定对象的特定对象关联的对象screen density/theme
。调用该deprecated
getDrawable(int)
方法等同于调用getDrawable(int, null)
。
您应该改用支持库中的以下代码:
ContextCompat.getDrawable(context, android.R.drawable.ic_dialog_email)
使用此方法等效于调用:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return resources.getDrawable(id, context.getTheme());
} else {
return resources.getDrawable(id);
}
context.getDrawable(id);
似乎等同于resources.getDrawable(id, context.getTheme());
ResourcesCompat.getDrawable(resources, id, context.getTheme());
从API 21开始,您还可以使用:
ResourcesCompat.getDrawable(getResources(), R.drawable.name, null);
代替 ContextCompat.getDrawable(context, android.R.drawable.ic_dialog_email)
最好的方法是
button.setBackgroundResource(android.R.drawable.ic_delete);
或为Drawable左边使用此选项,或为右边使用类似内容等。
int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);
和
getResources().getDrawable()
现在已弃用
getDrawable(int id)
不推荐使用API 21 。 所以现在您需要使用
ResourcesCompat.getDrawable(context.getResources(), R.drawable.img_user, null)
但是最好的方法是:您应该创建一个通用类来获取可绘制的颜色,因为如果将来发生任何更改或弃用的东西,则无需在项目中的任何地方进行更改。只需更改此方法
object ResourceUtils {
fun getColor(context: Context, color: Int): Int {
return ResourcesCompat.getColor(context.getResources(), color, null)
}
fun getDrawable(context: Context, drawable: Int): Drawable? {
return ResourcesCompat.getDrawable(context.getResources(), drawable, null)
}
}
使用这样的方法:
Drawable img=ResourceUtils.getDrawable(context, R.drawable.img_user)
image.setImageDrawable(img);