1

在我的应用程序中,我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 本身控制它?

4

1 回答 1

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

感谢您的参考 :)

于 2013-03-19T05:42:27.023 回答