这两天在自定义指针View时,选中和未选中时文字背景要不一样。一开始采用
TextBg=(.ViewPagerTitle_textViewBg) + (TextBg)
此处TextBg是个Drawable
这个方案,但发现有问题,是Drawable复用的问题。
后来想到,
用(TextBgResId);这个是没问题的。
但这个TextBgResId怎么拿到呢?
答案是:TextBgResId=(.ViewPagerTitle_textViewBg,0);
这是一种需要动态获取自定义属性中Drawable的资源id的案例。
其实,由于属性方法这块自己掌握的不全面,()这个方法是搜了一圈才找到的。而搜的过程中,发现了另一个实现需求而产生的知识点。就是:
有一组相似的图片,名称也很相似。
比如电量图标,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的两个典型案例。