我用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:提示值。
谢谢
答案 0 :(得分:6)
我刚刚写了一个答案来解释using XML with custom UI elements的整个过程。在您的情况下,不需要声明样式,因为您不需要自定义属性。使用android.R.attr.prompt
作为int id可以正常工作。只有在您设置了样式中的属性并且通过将R.styleable.className_attributeName
传递到R.styleable.className
来检索它们时,obtainStyledAttributes
才有效。
答案 1 :(得分:0)
在xml中定义样式。例如:
<declare-styleable name="ComboBox">
<attr name="prompt" format="reference"/>
</declare-styleable>
要获取构造函数中的值,请使用:
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ComboBox);
使用TypedArray get方法获取特定属性。