我为我的Android应用程序创建了自定义小部件,我想为它创建自定义样式。但是在类中解析它时总是返回null。通过几个链接,无法弄清楚问题是什么?有人可以帮忙吗?
我的atttr.xml是
<resources>
<declare-styleable name="Widget">
<attr name="headers" format="reference" />
<attr name="height" format="integer" />
</declare-styleable>
</resources>
小工具类
public Widget(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray attr = context.obtainStyledAttributes(attrs,
R.styleable.Widget);
String[] columns = (String[]) attr
.getTextArray(R.styleable.Widget_headers);
int height = attr.getInt(R.styleable.Widget_height, 0);
}
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:widget="http://schemas.android.com/apk/lib/com.sample.custom"
android:id="@+id/statistics_fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.sample.custom.Widget
android:id="@+id/widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
widget:headers="@array/headers" >
</com.sample.custom.Widget>
</LinearLayout>
Arrays.xml
<resources>
<string-array name="headers">
<item>Header1</item>
<item>Header2</item>
<item>Header3</item>
</string-array>
</resources>
答案 0 :(得分:1)
您是否尝试在视图构造函数的末尾回收数组?此链接涵盖了大部分内容 - creating custom views
答案 1 :(得分:0)
经过几个样本后,我发现了问题。
刚刚更换了
行TypedArray attr = context.obtainStyledAttributes(attrs,
R.styleable.Widget);
用这个
TypedArray attr = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.Widget,0,0)