1

GetStyleAttributes() を使用して一連のスタイル属性を取得しようとしていますが、最初のいくつかの項目しか取得できず、他のすべての項目はデフォルトになります。スタイルにこれらの属性のデフォルト以外の値が含まれていることを確認しました。どうしてこれなの?

4

1 に答える 1

0

この問題で 3 時間を無駄にしたので、これで誰かの時間を節約できることを願っています。

public TypedArray acquireStyledAttributes (AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) 2 番目の引数 attrs には、厳密に増加する数値順で属性識別子を含める必要があります。そうしないと、属性値が解決されず、呼び出しは暗黙のうちに次のように失敗します。属性が存在しなかった場合。

これは私が確認できる文書化された場所ではなく、何が問題なのかを理解するのに永遠にかかりました.

したがって、ID = 1 の ATTR1 と ID = 2 の ATTR2 という 2 つの属性があるとします (実際には、これらの数値ははるかに大きく、リソース コンパイラによって割り当てられます)。

1 回の呼び出しで両方の属性の値を取得する場合は、次のように記述する必要があります。

int[] 属性 = { ATTR1, ATTR2 };

代わりに、それらを交換すると、ATTR2 のみが取得され、代わりに ATTR1 がデフォルトになります。

于 2012-12-25T04:34:59.257 に答える