如何更改视图中文本的颜色?

时间:2013-08-31 16:33:14

标签: android

我的Activity中有一些我在运行时充气和填充的视图。

View本身是一个RelativeLayout,我在运行时添加了几个TextViews。

选择视图后,我会更改背景颜色(这很容易)。

现在我需要更改View中所有TextView的颜色。

请问我该怎么做?

考虑到我没有对TextViews本身的引用,因为它们是在运行时创建的,我也不知道它们中有多少。

2 个答案:

答案 0 :(得分:2)

  

考虑到我没有对TextViews本身的引用

由于您“在运行时添加了几个TextView”,因此您肯定会“自己引用TextViews”。在“运行时添加”时将它们添加到某种集合(例如ArrayList<TextView>),然后遍历集合以更改其颜色。

答案 1 :(得分:1)

你可以用另一种方式做到这一点:

迭代RelativeLayout的所有子项(你有一个参考):

for (int i = 0; i < mRelativeLayout.getChildCount(); i++) {
    if (mRelativeLayout.getChildAt(i) instanceof TextView) {

        // Set text color
        ((TextView)(rl.getChildAt(i))).setTextColor(Color.RED);
    }
}

小心mRelativeLayout.get(i) instanceof TextView。这将为true 返回的所有视图返回mRelativeLayout.getChildAt(i) TextView的子类。例如,如果您在mRelativeLayout内有一个Button,instanceof将返回true,因为Button扩展了TextView。为避免这种情况,请使用:

if (mRelativeLayout.getChildAt(i) instanceof TextView && 
                                !(mRelativeLayout.getChildAt(i) instanceof Button))