実行時に Android スタイルの値を取得しようとしているので、それらをカスタム コンポーネント内に適用できます。(埋め込みビューのコンストラクターに 3 番目のパラメーターとしてスタイル ID を渡してもうまくいかないようです。Context. obtainStyledAttributes(int, int[])
) (つまり、int[]
値にスタイルで指定された属性とスタイルで指定されていないandroid.R.attr.*
属性の混合が含まれている場合、 は、指定された属性のすべてではなく一部の値 (つまり) を持ちます。スタイルで。)TypedArray
TypedArray. hasValue(int)
も見つかりましResources. obtainTypedArray(int)
た。スタイルには常にすべての値が含まれているようですが、非常に使いにくいようです。問題は、値が対象の属性を指定していないように見えることです。属性が<style>
リソースに表示される順序で表示されるだけです。
調査しているスタイルがわかっている特別な場合でも、属性の順序について推測することはできません。誰かがやって来て、アルファベット順、機能別、またはランダムに並べ替える可能性があります。
ユーザーが指定した可能性のあるスタイル リソースを処理する必要がある、より一般的なケースでは、
android.R.attr.*
値でプローブする必要があります。
それで、私の質問:スタイルにどの属性がどの順序で含まれているかを見つける方法はありますか?
を呼び出すことはできますResources. getIntArray( styleId )
が、これではof値が得られません!int[]
android.R.attr.*