Android 自定义ListView文本颜色在Viewpager中时不随主题变化

Android 自定义ListView文本颜色在Viewpager中时不随主题变化,android,android-viewpager,android-theme,custom-lists,textcolor,Android,Android Viewpager,Android Theme,Custom Lists,Textcolor,在我的应用程序中,主屏幕上有一个ViewPager,其中两个片段具有自定义列表视图。应用程序有不同的主题,每个主题中有不同的文本颜色 我已经在不同的主题下实现了XML本身的所有UI属性,除了ViewPager内部自定义ListView中的文本颜色(我通过代码控制)外,其他都工作正常 问题:如何从XMl控制TextColor? 我已尝试将3个主题的颜色属性设置为TextStyle,textpearearence,TextColor等。但是,当这些自定义列表视图不在ViewPager中时,当相同的代

在我的应用程序中,主屏幕上有一个
ViewPager
,其中两个片段具有自定义列表视图。应用程序有不同的主题,每个主题中有不同的文本颜色

我已经在不同的主题下实现了XML本身的所有UI属性,除了ViewPager内部自定义ListView中的文本颜色(我通过代码控制)外,其他都工作正常

问题:如何从XMl控制TextColor?

我已尝试将3个主题的颜色属性设置为
TextStyle
textpearearence
TextColor
等。但是,当这些自定义列表视图不在ViewPager中时,当相同的代码工作时,没有任何效果

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

android:textColor="?attr/listItemContentTextColor"
属性所在的位置

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

在主题中指定为:

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

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

嗯,我找到了问题的答案

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

问题只存在于ViewPager中的自定义列表视图中,这些视图没有从XML中获取属性。我就是这样解决的

/values/attr.xml中

 <attr name="listFontColor" format="color" />
我没有检查代码中的每个主题,而是获取当前主题并在我的
适配器中指定代码中的字体颜色,如下所示

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

谢谢你的:)

嗯,我找到了我问题的答案

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

问题只存在于ViewPager中的自定义列表视图中,这些视图没有从XML中获取属性。我就是这样解决的

/values/attr.xml中

 <attr name="listFontColor" format="color" />
我没有检查代码中的每个主题,而是获取当前主题并在我的
适配器中指定代码中的字体颜色,如下所示

//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));
谢谢你的:)