具有自定义属性的Android自定义视图

我已经制作了自定义视图,我想为它设置一些自定义属性。 我想将另一个视图的id作为属性传递。

自定义视图attrs:

         

我使用自定义视图的布局:

       

自定义视图类的构造函数,我想获取属性值:

  public IdNumber (Context context, AttributeSet attrs) { super(context, attrs); initViews(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.IdNumber); final int N = a.getIndexCount(); for(int i = 0; i < N; i++){ int attr = a.getIndex(i); switch(attr){ case R.styleable.IdNumber_firstName: int firstNameViewID = a.getInteger(attr, -1); break; } } a.recycle(); } 

问题是int firstNameViewID = a.getInteger(attr, -1); 只是0,而不是View的id。

custom:firstName="@id/display_name" <<<这里应该是错误的但我不知道它有什么问题。 当我为自定义属性分配一些整数值时,它可以工作,但它不适用于Id-s。

感谢您在Advance中提供的帮助。

    更改你的define 在你的代码中使用int firstNameViewID = a.getResourceId(attr, -1);

    希望这有帮助!

    使用custom:firstName="@+id/display_name"并在你的样式中将其更改为而不是整数