我想在不重新创建活动的情况下动态更改我的活动主题,我发现的唯一解决方案是更改项目属性(如背景、文本颜色),但我有ListView
很多项目,我可以遍历所有项目ListView
和change textColor
,但我认为这是一个丑陋的解决方案。
有没有更好的方法来实现这一目标?
先感谢您
我想在不重新创建活动的情况下动态更改我的活动主题,我发现的唯一解决方案是更改项目属性(如背景、文本颜色),但我有ListView
很多项目,我可以遍历所有项目ListView
和change textColor
,但我认为这是一个丑陋的解决方案。
有没有更好的方法来实现这一目标?
先感谢您
您可以在 AdaptersgetView()
方法中执行以下操作:
int theme = getThemeColorFromPrefrences();
if(theme == darkTheme){
textView.setTextColor(...);
}
else{...}
现在每次用户更改颜色时,您只需调用invalidateViews()
您的ListView
:
// set other theme color [...]
myListView.invalidateViews()
我假设你有自定义的对象数组列表,在上面放一个私有的 int 颜色
class myobject {
private int color;
public void setColor(int color) { this.color=color; }
public int getColor { return color; }
}
在 getView() 集合中的自定义 ArrayAdapter 列表上
((TextView)view.findViewById(R.id.textview)).setColor(item.getColor());
//Where item is your MyObject at ArrayList(Position)
当您只想更改颜色时,在您的 onClick 按钮黑色
onClick() {
for(int i=0;i<arraylist.size();i++) { arraylist.get(i).setColor(Color.Black); }
arrayadapter.notifydatachange();
}
您可以为 ListView 行使用自己的布局,这样您就可以在布局文件上指定文本颜色。