你如何从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()现在已被弃用