Intereting Posts
Отключить один ключ на пользовательской клавиатуре на Android Какие криптоалгоритмы поддерживают Android? Что такое widthMeasureSpec и heightMeasureSpec в пользовательских представлениях Android? Force Android использует Wi-Fi сеть без Интернета Android – Что-нибудь похожее на обратные вызовы делегатов iPhone SDK? Что означает «неопределенный» в ProgressDialog? Сгенерируйте 10 чисел и переместите первый номер до конца 10 раз. Проверить, была ли включена блокировка или нет Каков размер текста по умолчанию на Android? Получение «java.lang.reflect.InvocationTargetException» при попытке зарегистрировать широковещательный приемник встроенного apk Скопировать содержимое Bitmap одного ImageView в anoher Android USB Host – bulkTransfer () теряет данные Публикация частного приложения Android для нескольких клиентов Как увеличить время на 1 час Частые проблемы, возникающие в представлении android, Анализ ошибок XML: несвязанный префикс

Использование селектора для изменения цвета текста 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, вместе со всем случаем .. когда не используется состояние по умолчанию.