如何检索自定义控件的XML属性

时间:2010-03-17 05:29:35

标签: android custom-controls

我用edittext和spinner创建了一个组合框控件。 我试图让android:prompt属性传递给 微调器,这意味着我需要在构造函数中捕获它 传递我的AttributeSet并在微调器上设置它。 我无法弄清楚如何获得提示的值。 我正在努力,

int[] ra = { android.R.attr.prompt };
TypedArray ta = context.getTheme().obtainStyledAttributes(ra); 
int id = ta.getResourceId(0, 0); 

我回到0,这意味着它找不到属性。 我也做了一个返回0的ta.count()。所以我什么都没回来。

我的XML只是定义了一个android:提示值。

谢谢

2 个答案:

答案 0 :(得分:6)

我刚刚写了一个答案来解释using XML with custom UI elements的整个过程。在您的情况下,不需要声明样式,因为您不需要自定义属性。使用android.R.attr.prompt作为int id可以正常工作。只有在您设置了样式中的属性并且通过将R.styleable.className_attributeName传递到R.styleable.className来检索它们时,obtainStyledAttributes才有效。

答案 1 :(得分:0)

  1. 在xml中定义样式。例如: <declare-styleable name="ComboBox"> <attr name="prompt" format="reference"/> </declare-styleable>

  2. 要获取构造函数中的值,请使用: TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ComboBox);

  3. 使用TypedArray get方法获取特定属性。