在Viewpager中,自定义ListView文本颜色不会根据主题更改

时间:2013-03-15 10:07:00

标签: android android-viewpager android-theme custom-lists textcolor

在我的应用中,我在主屏幕中有ViewPager,其中2个片段有自定义ListViews 。该应用程序具有不同的主题,每个主题中都有不同的文本颜色。

我已经在不同的主题下实现了XML本身的所有UI属性,并且工作正常,除了我在ViewPager中控制的自定义ListViews中的 TextColor 代码。

问题:如何从XMl控制TextColor?

我尝试将3个主题的颜色属性设置为TextStyleTextAppearenceTextColor等。但是当这些自定义ListView不在内时,相同的代码工作时没有任何效果ViewPager。

我没有添加任何特定代码,因为我尝试了很多方法。但作为一个例子,这是我用来设置TextColor的代码。

android:textColor="?attr/listItemContentTextColor"

属性为

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

在主题中指定为

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

有什么方法可以从XML本身控制它吗?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了问题的答案。

我无法从XML本身控制它,但我可以动态地实现 而不是硬编码。的:)

问题仅出在ViewPager 中的那些自定义列表视图中,而这些视图没有从XML中获取属性。这就是我解决它的方法。

/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));

感谢reference :)