我的Activity中有一些我在运行时充气和填充的视图。
View本身是一个RelativeLayout,我在运行时添加了几个TextViews。
选择视图后,我会更改背景颜色(这很容易)。
现在我需要更改View中所有TextView的颜色。
请问我该怎么做?
考虑到我没有对TextViews本身的引用,因为它们是在运行时创建的,我也不知道它们中有多少。
答案 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))