Android 动态更改ListView中所有项目的文本颜色
我想在不重新创建活动的情况下动态更改我的活动主题,我找到的唯一解决方案是在适当的位置更改项目属性(如背景、文本颜色),但我有一个带有项目数的Android 动态更改ListView中所有项目的文本颜色,android,listview,android-theme,Android,Listview,Android Theme,我想在不重新创建活动的情况下动态更改我的活动主题,我找到的唯一解决方案是在适当的位置更改项目属性(如背景、文本颜色),但我有一个带有项目数的ListView, 我可以反复浏览列表视图中的所有项目并更改文本颜色,但我认为这是一个相当糟糕的解决方案。 有没有更好的方法来实现这一点 提前感谢您您可以对ListView行使用自己的布局,这样您就可以在布局文件上指定文本颜色。我假设您有自定义的对象数组列表,在该列表上放置一个私有的int颜色 class myobject { private int
ListView
,
我可以反复浏览列表视图中的所有项目
并更改文本颜色
,但我认为这是一个相当糟糕的解决方案。有没有更好的方法来实现这一点
提前感谢您您可以对ListView行使用自己的布局,这样您就可以在布局文件上指定文本颜色。我假设您有自定义的对象数组列表,在该列表上放置一个私有的int颜色
class myobject {
private int color;
public void setColor(int color) { this.color=color; }
public int getColor { return color; }
}
在getView()集中的自定义ArrayAdapter列表上
当你只想改变颜色时,在你的onClick按钮上点击黑色
onClick() {
for(int i=0;i<arraylist.size();i++) { arraylist.get(i).setColor(Color.Black); }
arrayadapter.notifydatachange();
}
onClick(){
对于(int i=0;i您可以在适配器getView()
方法中执行类似操作:
int theme = getThemeColorFromPrefrences();
if(theme == darkTheme){
textView.setTextColor(...);
}
else{...}
现在,每当用户更改颜色时,只需在列表视图上调用invalidateViews()
:
// set other theme color [...]
myListView.invalidateViews()
谢谢你的回答,但我有自己的自定义行布局,我的问题是其他的!我想动态更改行文本的颜色。假设我有两个按钮,黑色和白色,当我按下黑色/白色时,我想将所有列表项的颜色更改为back/白色。谢谢,但是getView()已经为可见项调用了,它无法帮助更改可见项文本颜色。您不必调用它,只需根据需要声明getView,然后当您调用notifydatachange()时,android将发挥神奇的作用
// set other theme color [...]
myListView.invalidateViews()