首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从android包中的资源id中获取可绘制对象?

如何从android包中的资源id中获取可绘制对象?
EN

Stack Overflow用户
提问于 2011-10-19 09:48:34
回答 4查看 166.7K关注 0票数 169

我需要得到一个可绘制的对象,以显示在一个图像按钮。有没有办法使用下面的代码(或类似的代码)从android.R.drawable.*包中获取对象?

例如,如果drawableId为android.R.drawable.ic_delete

代码语言:javascript
复制
mContext.getResources().getDrawable(drawableId)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-19 10:13:20

代码语言:javascript
复制
Drawable d = getResources().getDrawable(android.R.drawable.ic_dialog_email);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
票数 242
EN

Stack Overflow用户

发布于 2017-02-06 23:55:39

从API 21开始,您还可以使用:

代码语言:javascript
复制
   ResourcesCompat.getDrawable(getResources(), R.drawable.name, null);

代替ContextCompat.getDrawable(context, android.R.drawable.ic_dialog_email)

票数 13
EN

Stack Overflow用户

发布于 2019-11-08 21:01:29

不推荐使用API 21中的getDrawable(int id)

所以现在你需要使用

代码语言:javascript
复制
ResourcesCompat.getDrawable(context.getResources(), R.drawable.img_user, null)

但最好的方法是:

您应该创建一个用于获取可绘制和颜色的公共类,因为如果将来有任何弃用,那么您不需要在project.You中到处进行更改,只需在此方法中进行更改

代码语言:javascript
复制
import android.content.Context
import android.graphics.drawable.Drawable
import androidx.core.content.res.ResourcesCompat

object ResourceUtils {
    fun getColor(context: Context, color: Int): Int {
        return ResourcesCompat.getColor(context.resources, color, null)
    }

    fun getDrawable(context: Context, drawable: Int): Drawable? {
        return ResourcesCompat.getDrawable(context.resources, drawable, null)
    }
}

使用此方法,如:

代码语言:javascript
复制
Drawable img=ResourceUtils.getDrawable(context, R.drawable.img_user)
image.setImageDrawable(img);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7815689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档