2013-08-31 2 views
0

У меня есть некоторые представления в моей деятельности, которые я раздуваю и заполняю во время выполнения.Как изменить цвет текста внутри представления?

The View self - RelativeLayout, к которому я добавляю во время выполнения несколько TextView.

Когда выбран режим просмотра, я меняю цвет фона (и это легко).

Теперь мне нужно изменить цвет всех текстовых элементов внутри представления.

Как мне это сделать?

Учтите, что у меня нет ссылки на самих TextViews, поскольку они созданы во время выполнения, и я не знаю, сколько их там.

+0

Вам не нужно добавлять «Android» в свои заголовки, вы уже предоставили тег. – ChiefTwoPencils

ответ

2

Считают, что у меня нет ссылки на TextViews сами

Так как вы «добавить во время выполнения несколько TextViews», вы, конечно, добро пожаловать в «есть ссылка на самих TextViews». Добавьте их в какую-то коллекцию (например, ArrayList<TextView>) в то время, когда вы «добавляете во время выполнения», а затем перебираете коллекцию, чтобы изменить свой цвет.

+0

большое спасибо! Как несчастливо: - (((это добавляет много сложности! Но если это единственное решение ...: - ((( –

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, instanceof вернет true, так как Button расширяет TextView. Чтобы этого избежать, используйте:

if (mRelativeLayout.getChildAt(i) instanceof TextView && 
           !(mRelativeLayout.getChildAt(i) instanceof Button)) 
Смежные вопросы