android 绕过R文件,通过代码获取styleable的属性

    都知道用 context.getResources().getIdentifier 获取 id,drawable等资源id,今天遇到个问题,自定义控件中要获取styleable,不能使用R文件,但是R.styleable.rootName返回一个int[],不能用上边的方法.


解决方法 :


R.styleable.xxx 返回的 int[] 由自己来创建 


定义styleable属性 :

<declare-styleable name="my">
    <attr name="myTxt" format="string">attr>
declare-styleable>

在View中 :

int attrId = context.getResources().getIdentifier("myTxt", "attr", context.getPackageName());
TypedArray ta = context.obtainStyledAttributes(attrs, new int[]{attrId}); //替代了R.styleable.my
 
  
 
  
获取到了TypedArray对象 , 然后 :
 
  
int styleableAttr = context.getResources().getIdentifier("my_myTxt", "styleable", context.getPackageName());
String txt = ta.getString(styleableAttr);
就获取到了xml中对应的数据. 
  
 
  
 
  





你可能感兴趣的:(android)