1

私のアプリでViewPagerは、メイン画面に があり、そのうち 2 つのフラグメントにカスタム ListViewsがあります。アプリには、テーマごとにテキストの色が異なるさまざまなテーマがあります。

XML 自体のすべての UI 属性をさまざまなテーマで実装しましたが、コードから制御しているViewPager 内のカスタム ListViewsの TextColor を除いて正常に動作しています。

質問: XML から TextColor を制御するにはどうすればよいですか?

TextStyle、などの 3 つのテーマの色属性を設定しようとしましたがTextAppearenceTextColorこれらのカスタム ListViews が ViewPager 内にないときに同じコードが機能している間は何も機能しませんでした。

多くの方法を試したので、特定のコードを追加していません。ただし、例として、これは TextColor の設定に使用したコードです。

android:textColor="?attr/listItemContentTextColor"

属性がどこにあるか、

 <attr name="listItemContentTextColor" format="color" />

テーマで次のように指定されています。

<item name="listItemContentTextColor">@android:color/white</item>

XML 自体から制御できる方法はありますか?

4

1 に答える 1

1

さて、私は私の質問に対する答えを見つけました。

XML自体から制御することはできませんでしたが、ハードコーディングする代わりに動的に実装することはできました。:)

問題は、XMLから属性を取得していないViewPager内のカスタムリストビューにのみありました。これが私がそれを解決した方法です。

/values/attr.xml

 <attr name="listFontColor" format="color" />

そして、それぞれThemeで、それに応じてlistFontColor属性値を設定します。

<item name="listFontColor">@android:color/white</item>

コード内の各テーマを確認する代わりに、現在のテーマを取得して、コード内のフォントの色を次のAdapterように割り当てました。

//dynamically fetching the theme's list font Color and setting it to textview
TypedArray a = ((MyActivity)context).getTheme().obtainStyledAttributes(((MyApplication)(context.getApplicationContext())).getcurrentTheme(), new int[] {R.attr.listFontColor});     
int attributeResourceId = a.getResourceId(0, 0);
listTitle.setTextColor(context.getResources().getColor(attributeResourceId));

参照 してくれてありがとう:)

于 2013-03-19T05:42:27.023 に答える