如何更改ViewGroup的所有子项的字体颜色,以及每个ViewGroup实例的不同?

时间:2012-03-19 18:54:46

标签: android

我有一个要在ListView中使用的行的布局。布局包含大约八个TextViews

如果一行代表“A”类型的数据,我希望它具有所有TextViews的浅灰色字体颜色的红色背景。如果数据类型为“B”,我希望背景颜色为绿色,字体颜色为黑色。

现在,我有一个自定义ListAdapter,并且在getView()方法中,我正在以编程方式更改每个TextView的字体颜色,但这非常繁琐。

我考虑过为“A”和“B”定义样式,但似乎没有办法以编程方式应用样式(即它只能在XML布局中静态完成)。

我还考虑过为“A”和“B”设置不同的布局,但我不想在两个XML文件中有重复的代码。

有关更好方法的任何想法吗?

2 个答案:

答案 0 :(得分:0)

This帖子显示了如何使用备用行颜色。

基本上,您实现getview,以便根据您的条件修改某些UI组件。

您可以修改帖子中的代码供您使用。

答案 1 :(得分:0)

我无法找到一个体面的方式来做到这一点。幸运的是,我正在使用Butter Knife库,可以使用查看组功能:

  

您可以将多个视图分组到列表或数组中。

@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<TextView> nameViews;
  

Action和Setter接口允许指定简单行为。

static final ButterKnife.Setter<TextView, Integer> SET_COLOR = new ButterKnife.Setter<TextView, Integer>() {
        @Override
        public void set(TextView view, Integer value, int index) {
            view.setTextColor(value);
        }
    };
  

apply方法允许您一次对列表中的所有视图执行操作。

ButterKnife.apply(nameViews, SET_COLOR, ContextCompat.getColor(getContext(), android.R.color.primary_text_light));