1

カスタム ビューのレイアウト XML のカスタム属性を作成する方法に関するこのガイドこの投稿に従おうとしましたが、何をしてもカスタム属性がゼロのリストが返され、理解に苦労しています。これをデバッグする方法。

次のようにファイル 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 が含まれているようで、プロジェクトのクリーニングと再構築を試みましたが、役に立ちませんでした。微妙な何かが欠けているように感じますが、わかりません。

私は何を間違っていますか?これらのカスタム属性の読み方は?

4

0 に答える 0