私は自分のテーマから取得したスタイルプロパティをコードに設定しようとしています。
自分のテーマからスタイルを使用したいのですが、私のユーザーインターフェイスレイアウトはXMLでウィジェットを定義することなく、カスタムレイアウトビルダーを使用して完全にコードで生成されます。だから私のウィジェットのXMLレイアウトにスタイルを設定することはできません。XMLレイアウトはありません。
私は
TypedArray a = context.obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
を使用して、私のウィジェットのコードでこのスタイルを設定することができることを考えています、これはあるので、ここでは
AttributeSet set = null;
こと(私には)そうですXMLインフレータが提供するもの。
は、私が見たい属性を定義します。
int defStyleAttr = myWidgetStyle;
MyWindowのスタイルに定義されている参考文献です。これらは両方ともres/valuesのXMLファイルで定義されています。 "myWidgetStyle"はアンドロイドの開発者がコードで使用した名前のパターンに従います。
defStyleRes = 0;
私はこれについて考える必要はないと思っています。
その後
Color color = a.getColor(R.styleable.MyWidget_background, R.color.my_default);
a.recycle();
、背景色など、任意のプロパティを取得するために、これははるかにとにかく-SO動作するようには思えません。
アンドロイドビルドシステムは、a.getColorで使用するための適切なインデックスを便利に生成し、その名前はR.styleable.MyWidget_background
となっているようです。私はこの名前を作っていないので、Androidは私のスタイル可能なMyWidgetのためにXMLを使っていなければなりません。
TypedArrayで必要な属性を検索すると正しいインデックスを検索できますが、これは非効率的で、TypedArrayは対処するには不愉快な仕掛けのように見えます。私はそれを突くために非常に長い棒を使用するでしょう!
ドン