1

XML ドキュメントからテキストを読み取り、そのテキストを画面に表示するアプリに取り組んでいます。リソース ファイル ( TextView の s TextAppearanceSpan用) に依存しない XML ドキュメント (フォント、サイズ、色、太字/斜体など) で指定されたパラメーターに基づいて、プログラムでオブジェクトを作成できるようにしたいと考えています。SpannableString

私は次のコンストラクタを見ていました:

TextAppearanceSpan(String family, int style, int size, ColorStateList color, ColorStateList linkColor)

しかし、sがどのように機能するかに関する情報が見つからないようですColorStateList。私がやろうとしていることは可能ですか?

4

1 に答える 1

4

ColorStateList のソース コードは次のとおりです。

GrepCode: ColorStateList

たとえば、次の XML セレクターは次のとおりです。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true" android:color="@color/testcolor1"/>
   <item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" />
   <item android:state_enabled="false" android:color="@color/testcolor3" />
   <item android:color="@color/testcolor5"/>
 </selector>

次のコードと同等です。

int[][] states = new int[4][];
int[] colors = new int[4];

states[0] = new int[] { android.R.attr.state_focused };
states[1] = new int[] { android.R.attr.state_pressed, -android.R.attr.state_enabled };
states[2] = new int[] { -android.R.attr.state_enabled };
states[3] = new int[0];

colors[0] = getResources().getColor(R.color.testcolor1);
colors[1] = getResources().getColor(R.color.testcolor2);
colors[2] = getResources().getColor(R.color.testcolor3);
colors[3] = getResources().getColor(R.color.testcolor5);

ColorStateList csl = new ColorStateList(states, colors);

色の状態とセレクターの仕組みに関するドキュメントはこちらです。

于 2013-02-07T18:26:09.323 に答える