你如何从Android包中的资源ID获取可绘制的对象?
我需要得到一个可绘制对象来显示图像button。 有没有办法使用下面的代码(或类似的东西)从android.R.drawable。*包中获取对象?
例如,如果drawableId是android.R.drawable.ic_delete
mContext.getResources().getDrawable(drawableId)
Drawable d = getResources().getDrawable(android.R.drawable.ic_dialog_email); ImageView image = (ImageView)findViewById(R.id.image); image.setImageDrawable(d);
从API 21起 ,您应该使用getDrawable(int, Theme)
方法而不是getDrawable(int)
,因为它允许您获取与给定screen density/theme
的特定resource ID
关联的drawable
对象。 调用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); }
从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);
或者这个可绘制的左边和类似的东西等等
int imgResource = R.drawable.left_img; button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);
和
getResources().getDrawable()
现在已被弃用