前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >getIdentifier获取资源id

getIdentifier获取资源id

作者头像
提莫队长
发布2019-02-21 11:10:19
4K0
发布2019-02-21 11:10:19
举报
文章被收录于专栏:刘晓杰

一共有两种

代码语言:javascript
复制
        Log.e("drawable的id", R.drawable.ic_launcher + "");

        // 包名 + : + 资源文件夹名 + / +资源名
        id = getResources().getIdentifier(
                "com.example.androidtest:drawable/ic_launcher", null, null);
        Log.e("drawable的id", id + "");

        // 第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名
        id = getResources().getIdentifier("ic_launcher", "drawable",
                "com.example.androidtest");
        Log.e("drawable的id", id + "");

测试结果如下

但是通常情况下这么弄没什么意思,很多时候我们要做的是获取系统的资源id。

比如我们要获取SearchView里面的某个控件。

首先我想到的是反射,但是经过实验发现提示报错no emoty constructor。

也可以用getIdentifier获取了id以后再findViewById,所以我做了测试

代码语言:javascript
复制
        id = mSv.getContext().getResources()
                .getIdentifier("android:id/search_src_text", null, null);
        Log.e("SearchView中SearchAutoComplete的id", id + "");

结果可以取到这个id

然后我们就可以做点文章了

代码语言:javascript
复制
TextView textView = (TextView) mSv.findViewById(id);
textView.setText("111111111");
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年10月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档