无法在XML中加载自定义属性

时间:2012-10-30 23:05:58

标签: android

我尝试关注如何为自定义视图的布局XML制作自定义属性this guidethis post,但无论我做什么,我都会返回零自定义属性列表,我在弄清楚如何调试它时遇到了很多麻烦。

我创建了一个文件res / values / attrs.xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="TexturedListView">
        <attr name="backgroundTexture" format="reference"/>
    </declare-styleable>
</resources>

然后我在布局XML文件中创建了一个自定义视图,如下所示:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="https://schemas.android.com/apk/res/xxx.rtin.texturedlistview"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <xxx.rtin.texturedlistview.TexturedListView
        android:id="@+id/texturedListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:dividerHeight="10dp"
        android:padding="20dp"
        custom:backgroundTexture="@drawable/background" >
    </xxx.rtin.texturedlistview.TexturedListView>

</RelativeLayout>

然后从我的TexturedListView类的构造函数中,我调用以下函数来尝试读取这个自定义属性:

public TexturedListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    TypedArray a = context.obtainStyledAttributes(R.styleable.TexturedListView);

    final int N = a.getIndexCount();
    //..snip...
}

然而,没有失败,N是0. R.styleable.TexturedListView似乎有适当的ID,我已经尝试清理和重建我的项目,但无济于事。我觉得我必须遗漏一些微妙的东西,但我无法弄清楚。

我做错了什么?如何阅读这些自定义属性?

0 个答案:

没有答案