2011-11-14 2 views
1

Я хочу изменить цвет текста 10-15 TextView в моем приложении, когда нажимается кнопка. Эти текстовые представления не относятся к одному действию. Есть ли способ реализовать это, кроме использования концепции темы.Изменить цвет текста нескольких текстовых просмотров из активности

+0

такой же цвет или разные цвета? –

+0

Тот же цвет. Моя основная проблема заключается в том, как обращаться ко всем там textviews atonce – includeMe

ответ

3

Вы можете сделать ArrayList из TextView и каждый раз, когда вы создаете TextView (при первом запуске своего приложения), который вы хотите изменить цвет текста, вы добавляете его в этот ArrayList. Позже, когда пользователь нажимает на вашу кнопку, вы вызываете метод, реализующий цикл в этом ArrayList, и вы устанавливаете свой цвет текста.

Для достижения этой цели может потребоваться статический ArrayList.

ArrayList<TextView> myAlTv = new ArrayList<TextView>(); 
     myAlTv.add(firstTv); 
     myAlTv.add(secondTv); 
     myAlTv.add(thirdTv); 
     //... 

public void changeColor() 
{ 
    for (int i = 0; i < myAlTv.size(); i++) 
    { 
     myAlTv.get(i).setTextColor(0xFFFF0000); 
    } 
} 
+0

думает, что это решит мою проблему .. но не так ли проще? – includeMe

+0

Не то, чтобы я вижу, извините ... подождите немного, может быть, кто-то умнее поможет вам. – mthpvg

+0

Возможно, у вас может быть изменение цветового метода для каждой из ваших действий, изменяющих цвет TextView внутри этой конкретной операции, а также изменение логического на true. Поэтому, когда вы начинаете другое действие при восстановлении макета, ваш макет будет замечать, чем логическое изменение его значения, и поэтому создаст TextViews с новым цветом ... это грязно, не знаю, получишь ли вы мою точку зрения. – mthpvg

2

Вы можете использовать sharedPreferences для этого. Когда вы нажимаете кнопку, вы можете сохранить цвет, который должен иметь текстовый просмотр, в объект sharedPreferences. А затем в других ваших действиях вы можете получить эти значения цвета, получив ранее установленный параметр sharedPreference, и вы можете легко назначить эти значения цвета для текстовых просмотров в других действиях.

+0

Сохранение и извлечение выделенного цвета не является проблемой. Есть ли способ передать все текстовые представления без создания объекта для текстового вида, изменить его цвет, а затем создать объект для следующего. – includeMe

+1

Вы не можете получить доступ к объектам, не создавая их, но, как я уже сказал, вы можете установить это свойство а затем назначить их им в любое время. –

Смежные вопросы