Android 特殊场景下获取Drawable的资源id(ResourceId)

这两天在自定义指针View时,选中和未选中时文字背景要不一样。一开始采用

TextBg=array.getDrawable(R.styleable.ViewPagerTitle_textViewBg)
+
textView.setBackground(TextBg)

此处TextBg是个Drawable

这个方案,但发现有问题,是Drawable复用的问题。

后来想到,

用textView.setBackgroundResource(TextBgResId);这个是没问题的。

但这个TextBgResId怎么拿到呢?

答案是:TextBgResId=array.getResourceId(R.styleable.ViewPagerTitle_textViewBg,0);

这是一种需要动态获取自定义属性中Drawable的资源id的案例。

其实,由于属性方法这块自己掌握的不全面,array.getResourceId()这个方法是搜了一圈才找到的。而搜的过程中,发现了另一个实现需求而产生的知识点。就是:

有一组相似的图片,名称也很相似。
比如电量图标,ic_battery_0,ic_battery_1,ic_battery_2,…,ic_battery_100。
那么如果要根据电量值显示对应的图标的话,动态获取ResourceId才是一个优雅的方案,而不是多个if else嵌套的那种方案。

直接上结论,代码示例:

String resName = "ic_battery_" + batteryValue;
int resID = getResources().getIdentifier(resName, "drawable",   getContext().getPackageName());

好了。这就是特殊场景下获取资源id即ResourceId的两个典型案例。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值