Изменить цвет текста в тексте TextView и щелкнуть?
У меня есть интерактивный TextView, который я хочу дать некоторым цветам. Но я не знаю, как это сделать. Вот соответствующие fragmentы кода из двух моих файлов, с которыми я работаю:
TextView title = new TextView(this); title.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); title.setTextColor(R.color.textcolor); title.setText(titleLine); title.setTypeface(null, Typeface.BOLD); title.setClickable(true); title.setId(idLine); title.setFocusable(true); title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /* Irrelevant code */ } });
И это мой файл textcolor.xml:
Когда я использую textcolor-файл, набрав title.setTextColor (R.color.textcolor); , textcolor просто становится серым, независимо от того, нажимаю ли я его или нет. Что странно, так как я написал «# 000000» во всех полях цвета.
Но если я удалю код setTextColor, получим textView светло-серый цвет, и когда я его нажму, он станет черным. Но это не те цвета, которые я хочу.
- Редактирование гиперссылок и якорей в PDF с помощью ITextSharp
- Scrapy: Следуйте ссылке, чтобы получить дополнительные данные элемента?
- Пример использования гиперссылки в WPF
- Как создать прямую ссылку на любую коробку fancybox
- Как сделать кнопку похожим на ссылку?
Итак, может ли кто-нибудь помочь мне с этой проблемой?
Просто уточнить: я хочу иметь возможность указывать цвета для текста, когда он нормальный, нажатый и сфокусированный.
- jQuery отключить ссылку
- Использование jQuery для программного перехода по ссылке
- C # regex pattern для извлечения URL-адресов из заданной строки - не полный URL-адрес html, но также и ссылки
- Как создать ссылки в текстовом клиенте?
- Как ссылаться на метод в javadoc?
- Как я могу сделать ссылку на клики в NSAttributedString?
- Что такое синтаксис RTF для гиперссылки?
- Facebook share link - можете ли вы настроить текст сообщения?
Если вы хотите установить цвет с сохранением цвета из кода, вам нужно передать ColorStateList
в качестве аргумента setTextColor
передающего int в метод, чтобы установить цвет для всех состояний. Это также похоже на то, что ваш xml не совсем корректен. Пример из документов ColorStateList
выглядит так: (должно быть расположено вот так: res/color/selector_txt.xml
):
UPD о том, как установить ColorStateList
в цвет текста:
ColorStateList cl = null; try { XmlResourceParser xpp = getResources().getXml(R.color.selector_txt); cl = ColorStateList.createFromXml(getResources(), xpp); } catch (Exception e) {}
Примечание . Метод createFromXml(Resources, XmlPullParser parser)
устарел на уровне API 23. Используйте createFromXml(Resources, XmlPullParser parser, Theme)
С XML это легко:
android:textColor="@color/selector_txt"
Шаг 1. Установите цвет текста в xml, как это
андроид: TextColor = “@ цвет / text_color”
Шаг 2: Создайте res / color / text_color.xml
Попробуйте это … Это сработало для меня:
Имя файла: res / color / bg_tab_text_color.xml
Попробуйте установить цвет в макете xml как:
android:textColor="@color/bg_tab_text_color"
Посмотрите class R.java (он генерируется автоматически). У вас есть что-то вроде этого:
public static final class color { public static final int gray_transparent=0x7f050001; }
Итак, в вашем коде в строке:
title.setTextColor(R.color.textcolor);
вы не устанавливаете значения из textcolor.xml, а int из R.java (который содержит адрес textcolor.xml). Правильный способ установки цвета:
title.setTextColor(getResources().getColorStateList(R.color.textcolor));
Это очень легко. Поймите это … Это сработало для меня:
Имя файла: res / color / bg_tab_text_color.xml
Попробуйте установить цвет в макете xml как:
android:textColor="@color/bg_tab_text_color"
Это очень простой способ программно:
private void setColorStateList(TextView view) { int[][] states = new int[][] { new int[] { android.R.attr.state_pressed}, // pressed new int[] { android.R.attr.state_focused}, // focused new int[] { android.R.attr.state_enabled} // enabled }; int[] colors = new int[] { getResources().getColor(R.color.blue), getResources().getColor(R.color.green), getResources().getColor(R.color.green) }; ColorStateList list = new ColorStateList(states, colors); view.setTextColor(list); view.setClickable(true); view.setFocusableInTouchMode(true); }
В res / drawable / tab_textColor.xml:
В res / color / text_selector.xml:
В макете:
В коде:
textView.setSelected(false); // To deselect. textView.setSelected(true);