Intereting Posts
Страница входа в систему Google OAuth «отменить» и «принять» не активирована с 22 августа Комплект Eclipse ADT зависает, когда телефон подключен Как я могу автоматически активировать активность настроек Bluetooth? Android java.net.UnknownHostException: хост не решен Как изменить размер изображения при касании Тяжесть TextView не работает с ивритом Отладка в Eclipse с помощью реального телефона Android на Ubuntu 10.10 Как отправить тело веб-контента по электронной почте? Просмотр с горизонтальным и вертикальным панорамированием / перетаскиванием и масштабированием Не получать связанные с SD-картой намерения моему широковещательному приемнику Изменить цвет «на» переключателя Android Studio не может разрешить ошибку ': app: preDexDebug' GetLocationOnScreen возвращает старую позицию после вращения Простая в App Purchase App Android Событие Android-ключа для задней клавиши, когда отображается мягкая клавиатура?

Использование селектора для изменения цвета текста TextView

Я пытаюсь использовать TextView для определения стиля TabWidget на tabhost.

Я просто создал селектор для bgcolor и отлично работает, но я хочу сделать селектор для textColor, но цвет текста не изменяется:

Это мой tab_text_selector.xml:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="true" android:color="@android:color/white" /> <item android:state_focused="true" android:color="@android:color/white" /> <item android:state_pressed="true" android:color="@android:color/white" /> </selector> 

И это код, когда я пытаюсь использовать в textView:

 TextView txtTab=new TextView(this); txtTab.setTextColor(R.drawable.tab_text_selector); txtTab.setBackgroundResource(R.drawable.tab_bg_selector); txtTab.setGravity(Gravity.CENTER); txtTab.setText("Agregar Idea"); 

Я знаю, что цвет текста должен быть белым в любом случае, но это не так.

Solutions Collecting From Web of "Использование селектора для изменения цвета текста TextView"

Вы должны использовать getColorStateList () . И для xml, см. Здесь

Я также боролся с этой проблемой, если вы хотите использовать state list , вам нужно объявить его в папке с color ресурсами вместо drawable папки и использовать setTextColor(getResources().getColorStateList(R.color.tab_text_selector)) .

1) Используйте tab_text_selector.xml, как показано ниже, и поместите его в папку res / color:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color="@android:color/white" /> <item android:state_focused="true" android:color="@android:color/white" /> <item android:state_pressed="true" android:color="@android:color/white" /> <item android:color="#504f4f" /> <!-- default case --> </selector> 

И установите его в текст, как показано ниже.

 TextView tv = (TextView) findViewById(R.id.TextView1) ; tv.setTextColor(context.getResources().getColor(R.color.tab_text_selector)); 

2) Второй вариант: если вы используете textview в xml вместо использования программной программы, используйте tab_text_selector.xml, как показано ниже:

 <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="TextView" android:textColor="@‌​color/tab_text_sel‌​ector" /> 

Используйте этот способ:

tab_text_selector.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:color="#FF111111"/> <item android:state_focused="true" android:color="#FF222222"/> <item android:state_selected="true" android:color="#FF333333"/> </selector> 

TextView:

 TextView txtTab = new TextView(this); XmlResourceParser xrp = getResources().getXml(R.drawable.tab_text_selector); try { ColorStateList csl = ColorStateList.createFromXml(getResources(), xrp); txtTab.setTextColor(csl); } catch (Exception e) { } txtTab.setBackgroundResource(R.drawable.tab_bg_selector); txtTab.setGravity(Gravity.CENTER); txtTab.setText("Agregar Idea"); 

Но лучше поместить цвет в /res/color/yourcolor.xml

Просто сделайте Selector для textcolor

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="@color/drawer_color" /> <item android:state_focused="false" android:color="@android:color/white" /> <item android:state_selected="true" android:color="@color/drawer_color" /> 

Затем установите для свойства textColor Textview значение clickable = true

 <TextView android:clickable="true" android:textColor="@drawable/text_selector" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/registration" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> 

@ Ffleandro, @ ρяσѕρєя K отвечает на лучший вариант, я думаю, используя лучший выбор ColorStateList для более старых и последних версий Android.

 int[][] states = new int[][] { new int[] { android.R.attr.state_pressed}, // pressed new int[] { android.R.attr.state_focused}, // focused new int[] {} }; int[] colors = new int[] { getResources().getColor(R.color.green_color), // green getResources().getColor(R.color.green_color), // green getResources().getColor(R.color.white) // white }; ColorStateList list = new ColorStateList(states, colors); mTextView.setFocusable(true); mTextView.setClickable(true); mTextView.setTextColor(list); 

Вот ссылка на разработчиков Android http://developer.android.com/guide/topics/resources/color-list-resource.html

 <item android:state_selected="true" android:color="@android:color/white" /> <item android:state_focused="true" android:color="@android:color/red" /> <item android:state_pressed="true" android:color="@android:color/blue" /> 

Вы использовали белый цвет во всех случаях фокус, выбранный и нажатый.

Пожалуйста, используйте и протестируйте с другим цветом.

Также необходимо использовать случай по умолчанию с определенным цветом, например black, вместе со всем случаем .. когда не используется состояние по умолчанию.