Android settextcolor from resource

Как установить цвет текста TextView в коде?

в XML мы можем установить цвет текста с помощью

30 ответов

вы должны использовать:

для проверки здравомыслия я просто попробовал, потому что у меня все равно был открыт проект, и да, он хороший и красный ;D

вы можете использовать различные функции из Color класс, чтобы получить тот же эффект, конечно.

Color.parseColor (ручное) (как Лекс использует)

Color.rgb и Color.argb (руководство rgb) (руководство формате ARGB) (как Ганапати использует)

и конечно, если вы хотите определить свой цвет в , вы можете сделать это:

потому что getColor() функция является устаревшим 1 , вам нужно использовать его так:

вы также можете вставить простой шестигранник, например:

где вы имеете альфа-канал сперва, тогда цвет значение.

1 этот код также был здесь:

этот метод теперь устарел в Android M. Однако вы можете использовать его из contextCompat в библиотеке поддержки, как показывает пример.

если вы все еще хотите указать свои цвета в XML-файле:

затем ссылайтесь на него в своем коде одним из этих двух методов:

первый, вероятно, предпочтительнее, если вы компилируете против Android M, однако тема, которую вы передаете, может быть нулевой, так что, может быть, это проще для вас?

и если вы используете библиотеку Compat, вы можете сделать что-то вроде этого

вы можете сделать это только из XML-файла.

создать color.xml файл в папке значения:

затем в любом XML-файле вы можете установить цвет для текста, используя,

или вы можете использовать этот цвет в Java-файл:

вы также можете указать, какой цвет вы хотите с прозрачностью.

a для Альфа (прозрачный) значение r-красный g-зеленый b-синий

используйте следующий код в layout.в XML

существует много разных способов установить цвет в текстовом представлении.

добавить значение цвета в studio res — > значения — >цвета.xml как

теперь установите цвет в классе xml или actvity как

если вы хотите дать цветовой код непосредственно использовать ниже цвета.parseColor code

вы также можете использовать RGB

Use также может использовать прямой hexcode для поле TextView. Вы также можете вставить простой HEX, например:

вы также можете использовать argb с Альфа-значениями.

a для Альфа (прозрачный) v.

и если вы используете библиотеку Compat, вы можете сделать что-то вроде этого

обычно я делаю это для любых представлений:

AA определяет alpha (00 для прозрачного, FF для непрозрачного)

RRGGBB определяет обычный код цвета HTML (например, ff0000 для красного).

Если вы планируете использовать setTextAppearance вы должны знать, что он будет перезаписывать цвет текста со стилем, унаследованным от темы. Поэтому, если вы хотите использовать оба, установите цвет после.

в то время как это приведет к тому, что ваш textcolor будет, например, белым (для темной темы) или черным(для светлой темы):

вопреки этому в XML порядок является произвольным.

Я считаю, что если вы хотите указать цвет в качестве ресурса (в XML file), вам придется предоставить его формате ARGB значение (не просто значение RGB).

попробуйте изменить значение цвета на #FFFF0000 . Это должно дать вам красный цвет.

Источник

Как установить цвет текста TextView в коде?

В XML мы можем установить цвет текста с помощью атрибута textColor , например, android:textColor=»#FF0000″ . Но как мне его изменить путем кодирования?

Я попробовал что-то вроде:

Где holder – это просто класс, а text имеет тип TextView . Красный – это значение RGB (# FF0000), установленное в строках.

Но он показывает другой цвет, а не красный. Какой параметр мы можем передать в setTextColor ()? В документации это говорит int , но является ли это ссылочным значением ресурса или чем-то еще?

Вы должны использовать:

Для проверки здравомыслия я просто попробовал, потому что у меня был проект в любом случае, и да, это красиво и красно, D

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

Color.parseColor (Manual) (например, LEX)

Color.rgb и Color.argb ( Manual rgb ) ( ручной аргумент ) (например, использование Ganapathy )

И, конечно, если вы хотите определить свой цвет в XML файле, вы можете сделать это:

Потому что функция getColor() устарела 1 , вам нужно использовать ее так:

Вы также можете вставить простой HEX, например:

Сначала у вас есть альфа-канал, затем значение цвета.

Разумеется, вы получите полное руководство, открытый класс Color extends Object .

1 Этот код также был здесь:

Этот метод теперь устарел в Android M. Однако вы можете использовать его из contextCompat в библиотеке поддержки , как показывает пример.

Если вы все еще хотите указать свои цвета в XML-файле:

Затем укажите его в коде с помощью одного из этих двух методов:

Первое, вероятно, предпочтительнее, если вы компилируете на Android M, однако тема, которую вы передаете, может быть нулевой, так что, может быть, вам это проще?

И если вы используете библиотеку «Совместимость», вы можете сделать что-то вроде этого

Читайте также:  Потраченный перевод для андроид

Вы можете сделать это только из XML-файла.

Создайте файл color.xml в папке значений:

Затем в любом XML-файле вы можете установить цвет текста, используя,

Или вы можете использовать этот цвет в файле Java:

Вы можете использовать

Вы также можете указать, какой цвет вы хотите с помощью Transparency.

A для значения Alpha (прозрачное) r-red g-green b-blue

Обычно я делаю это для любых просмотров:

AA определяет альфа (00 для прозрачных, FF для непрозрачных)

RRGGBB определяет нормальный код цвета HTML (например, FF0000 для красного).

Используйте следующий код в layout.xml

Если вы планируете использовать setTextAppearance, вы должны знать, что он перепишет цвет текста стилем, унаследованным от темы. Поэтому, если вы хотите использовать оба варианта, установите цвет потом .

Хотя это приведет к тому, что ваш текст будет выглядеть, например, белым (для темной темы) или черным (для легкой темы):

Вопреки этому в XML порядок произволен.

Я считаю, что если вы хотите указать цвет как ресурс (в файле XML ), вам нужно будет указать его значение ARGB (а не просто значение RGB).

Попробуйте изменить значение цвета на #FFFF0000 . Он должен дать вам КРАСНЫЙ.

Существует множество способов задать цвет в текстовом режиме.

Добавить значение цвета в studio res-> values-> colors.xml as

Теперь задайте цвет в классе xml или actvity как

Если вы хотите, чтобы код цвета напрямую использовался ниже Color.parseColor code

Вы также можете использовать RGB

Использование также может использовать прямой hexcode для textView. Вы также можете вставить простой HEX, например:

Вы также можете использовать argb с альфа-значениями.

A для альфа (прозрачный) v.

И если вы используете библиотеку «Совместимость», вы можете сделать что-то вроде этого

holder.text.setTextColor(Color.rgb(200,0,0));
или
myTextView.setTextColor(0xAARRGGBB);

Используя адаптер, вы можете установить цвет текста с помощью этого кода:

text1.setTextColor (Color.parseColor ( «# 000000»));

Над кодом работает на моей стороне. Здесь text TextView, цвет которого необходимо установить.

Если вы хотите напрямую указать цветовой код, используйте

Или если вы хотите дать цветовой код из папки цветов, то используйте

В Adapter вы можете установить цвет текста с помощью этого кода:

Чтобы установить цвет TextView, TextView.setTextColor(R.color.YOURCOLOR) недостаточно!

Его нужно использовать так:

Аналогично, я использовал color.xml :

Для установки фона TextView например:

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

Я сделал так: создайте XML-файл под названием Colors in res / values.

Чтобы получить эти цвета из xml-файла, я использовал этот код: valor – это TextView, а ctx – объект Context. Я не использую его из Activity, а BaseAdapter для ListView. Вот почему я использовал этот объект контекста.

Для обеспечения значений rgb: text.setTextColor(Color.rgb(200,0,0));
Для разбора цвета из шестнадцатеричного значения: text.setTextColor(Color.parseColor(«#FFFFFF»));

Если вы находитесь в адаптере и все еще хотите использовать цвет, определенный в ресурсах, вы можете попробовать следующий подход:

Итак, попробуйте вот так:

Я делал это для TextView в ViewHolder для RecyclerView. Я не уверен, почему, но это не сработало для меня в инициализации ViewHolder.

Но когда я переместил его в onBindViewHolder, он работал нормально.

Источник

How to change Text Color of TextView in Android?

Android TextView – Text Color

TextView Text Color – To change the color of text in TextView, you can set the color in layout XML file using textColor attribute or change the color dynamically in Kotlin file using setTextColor() method.

In this tutorial, we will learn both the layout file approach and Kotlin line approach to change the text color of TextView.

Change Text Color of TextView via XML Layout File

textColor attribute of TextView widget lets you set a color of your choice. You can provide the color as hex value in one of the four formats: rgb, argb, rrggbb, or aarrggbb.

The syntax to set textColor attribute for TextView using different color formats is

Example 1 – TextView Color

Let us create an Android application with Kotlin support in Android Studio and change the text color of TextView in XML layout file.

activity_main.xml

We have used a string resource, and the contents of strings.xml is

There is no need to change the MainActivity.kt file. The default code would do.

MainActivity.kt

Run this application, and you would get the following screenshot.

Change Text Color of TextView in Kotlin File

We can get the reference to TextView widget present in layout file and change the color dynamically with Kotlin code.

To set the color to the TextView widget, call setTextColor() method on the TextView widget reference with specific color passed as argument.

setTextColor() method takes int as argument. Use android.graphics.Color class to get an integer for a given color. You can provide the color as hex value in one of the four formats: rgb, argb, rrggbb, or aarrggbb.

The syntax to set text color using setTextColor() method of TextView in Kotlin Activity file is

Example 2 – TextView Color

Let us create an Android application with Kotlin support in Android Studio and change the text color of TextView dynamically/programmatically in Kotlin file.

The layout file contains a TextView. Since we are about to change the text color in Kotlin file, no text color is specified in layout XML file.

activity_main.xml

We have used a string resource, and the contents of strings.xml is

We have got the reference to the TextView in layout file using findViewById() method. Call to setTextColor() method on the TextView reference would set the text color of TextView.

Читайте также:  Футбол удары для андроид

MainActivity.kt

Run this application, and you would get the following screenshot.

Conclusion

In this Kotlin Android Tutorial, we learned how to set or change the text/font color of TextView widget in Android application.

Источник

Android Ресурсы . Работа со строками, цветами, стилями, картинками

Ресурсы

В Android системе почти всё, что не является Java кодом, является ресурсами. Ресурсы используются для определения цветов, изображений, макетов, строковых значений и т.д. Вы можете указывать значения в файлах ресурсов, а потом ссылаться на них в Java коде вашего приложения.

Все ресурсы находятся в папке res . Посмотрим, какие по умолчанию есть папки, файлы в каталоге res .

  • drawable – хранит в себе картинки, другие графические файлы.
  • layout – хранит все макеты приложения.
  • mipmap – хранит лого приложения, которое отображается в меню приложений.
  • values – хранит в себе разные ресурсы, такие как цвета, строки, стили, размеры.

Далее нам необходимо в верхнем левом углу поменять отображение проекта с Android на Project . Это позволит нам увидеть все папки, которые реально созданы в нашем проекте. Изначально мы не делали этого, чтобы не пугать вас 🙂

Можете заметить, что на самом деле в проекте несколько папок drawable и mipmap . Это папки для разных разрешений экранов, устройств, версий системы. Подробнее это обсудим в следующих уроках.

Ресурсы из папки res/values

Нажмём на папку values , посмотрим, что в ней находится:

  • colors.xml – содержит в себе все цвета.
  • strings.xml – хранит все строковые ресурсы.
  • styles.xml – хранит стили приложения.

Хранение таких данных в отдельных ресурсах дает нам гибкость и удобство при работе с проектом. Мы рассмотрим преимущества использования ресурсов на примере локализации – поддержки нескольких языков в приложении.

Файл string.xml. Локализация

Мы будем поддерживать два языка в нашем приложении: английский и русский. Для локализации приложения используют файл strings.xml . Туда помещается весь текст приложения, который должен быть подвержен локализации. Чтобы добавить поддержку ещё одного языка, надо создать папку с именем values-language . Т.к. мы поддерживаем русский язык, то создадим папку values-ru . Для этого нажмём правой кнопкой на папку res и выберем пункт New -> Android resource directory :

  • Directory name – values-ru
  • Resource type – values
  • Source set – main

Вот как это должно выглядеть:

После этого видим, что создалась папка values-ru . Отлично, создадим новый файл strings.xml . Для этого нажимаем правой кнопкой по папке values-ru , выбираем New -> Values resource file :

Затем появится окно, в котором необходимо ввести имя файла. Вводим strings . Теперь всё, что нам надо сделать – это добавлять ресурсы в эту папку с таким же именем, но значения мы будем писать на русском языке. Система автоматически будет брать значения из этого файла, если у пользователя на устройстве установлен русский язык. Для начала давайте посмотрим как выглядит обычный строковый ресурс:

У каждого строкового ресурса есть имя, по которому в дальнейшем будет идти обращение к нему, а также его значение. На самом деле так выглядят не только строковые ресурсы, а все ресурсы приложения:

Просто вместо типа ресурса string используются другие необходимые значения ( color , dimen и т.д.). Теперь проверим, что это всё действительно работает. В файле values/strings.xml по умолчанию при создании проекта есть строка app_name :

Теперь добавим эту же строку, но на русском языке в файл values-ru/strings.xml :

Видим, что название ресурса app_name совпадает в двух папках. А вот значения мы можем указывать для каждого языка свои.

Доступ к ресурсам из XML

Теперь после создания строкового ресурса нам необходимо использовать его в layout файле. Ссылка на наш ресурс будет выглядеть так: @string/app_name . Но сейчас остановимся на минуту и разберём общий синтаксис при ссылке на файл ресурса из XML:

  • – имя пакета, в котором находится ресурс. Чаще всего его не будет, т.к. мы берём ресурсы из своего приложения. Если бы мы хотели взять строку из android библиотеки, то обращались бы @android:string .
  • – тип ресурса, к которому мы обращаемся. В данном случае – string . Обратите внимание, что название отличается от названия файла strings – используется единственное число.
  • – название ресурса.

Теперь, когда мы научились обращаться к ресурсам, давайте в файле activity_main.xml у TextView заменим текст на только что созданный строковый ресурс.

Запустим приложение и убедимся, что локализация действительно работает. После запуска приложения на эмуляторе, видим, что вывелась строка Resources , т.к. на эмуляторе стоит английский язык.

Давайте добавим русский язык и сделаем его основным. Для этого необходимо зайти в настройки системы и выбрать: System -> Languages & input -> Languages -> Русский. После добавления ставим русский язык первым:

Можем открыть приложение на эмуляторе или запустить его заново. Результат выглядит так:

Отображается надпись Ресурсы . Вот такое простое и элегантное решение предоставляет нам система для добавления поддержки новых языков. Стоит отметить, что помимо ручного заполнения файлов с ресурсами, существует возможность делать это через специальный редактор. Чтобы в него попасть необходимо, открыв файл со строковыми ресурсами (любого языка), в правом верхнем углу нажать кнопку «Open editor» (рус. Открыть редактор). Удобно использовать редактор, чтобы убедиться, что вы перевели все строки в приложении:

Вы можете заметить, что строка может быть нелокализируемой (поле untranslatable ). Примером могут быть технические термины, которые не переводят на другие языки: IMAP , NFC , GPS . Для таких строк в файле strings.xml необходимо установить атрибут translatable=»false» . В файлах для остальных языков не надо дублировать эти строки.

Доступ к ресурсам из Java кода

Также к ресурсам можно получить доступ из Java кода. Посмотрим на синтаксис.

Читайте также:  Кэш карты памяти андроид

Видим, что он очень похож на синтаксис доступа к ресурсу из XML. Параметры имя_пакета , тип_ресурса , имя_ресурса являются идентичными.

Доступ к нашему ресурсу можно получить так: R.string.app_name .

Когда приложение компилируется, автоматически генерируется класс R , который содержит идентификаторы для всех ресурсов в папке res/ . Для каждого типа ресурсов существует вложенный класс (например, R.string для всех строк), и для каждого ресурса этого типа существует целое число (например, R.string.app_name ). Из-за этого мы и можем получить доступ к ресурсу из Java кода.

Разберём на примере, как установить текстовый ресурс в TextView из Java кода:

Обратите внимание, что атрибут text мы не указали в XML файле.

Вначале мы связываем TextView из XML файла с Java кодом с помощью findViewById(R.id.text) . Потом получаем строку, используя getResources().getString(R.string.app_name) . После этого устанавливаем строку в TextView с помощью setText(appName) . Запустите приложение и убедитесь, что логика локализации не изменилась.

Зачем работать с ресурс файлами из Java кода, если можно из XML?

Бывают ситуации, когда вы заранее не можете знать, какой ресурс вы хотите использовать. Например, если в соц. сети человек уже прочитал сообщение, то вы хотите отобразить “Прочитано”, в другом случае – “Отправлено”. Именно в таких случаях необходимо работать с ресурсами из Java кода.

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

Файл colors.xml

Файл colors.xml хранит в себе цвета приложения. Это удобно, потому что вы храните (изменяете при необходимости) цвет в одном месте. По умолчанию создаются цвета, которые используются в нашем приложении. Добавим ещё два цвета:

Используем эти цвета в layout файле, обращаясь к ним @color/background_light , @color/text_dark :

Теперь представьте, что дизайнер сказал вам изменить цвет текста с чёрного на тёмно синий, а фоновый цвет – с серого на тускло жёлтый. Изменяем только значения в colors.xml :

Доступ из Java кода осуществляется аналогично, как и со строковыми ресурсами. Разберём на примере:

С помощью getResources().getColor() получаем цвет, а используя setTextColor() , setBackgroundColor() устанавливаем цвета. В реальной жизни с этим часто приходится работать, когда в зависимости от статуса заказа товара в интернет-магазине изменяется фоновый цвет кнопки или контейнера.

Всегда храните все цвета приложения в файле colors.xml , чтобы легче было вносить изменения. Также это необходимо для использования нескольких тем (дневной и ночной) в приложении.

Файл styles.xml. Стили

Файл styles.xml нужен для того, чтобы объединять повторяющиеся атрибуты элементов в стили. Давайте откроем файл styles.xml :

По умолчанию в приложении создаётся стиль AppTheme , который задаёт основные цвета нашего приложения. Синтаксис создания стиля довольно простой:

Давайте на практике рассмотрим использование стилей. У нас есть такой layout , в котором у двух TextView повторяется множество атрибутов:

Мы можем вынести все эти атрибуты в новый стиль:

И после этого используем этот стиль в файле activity_main.xml , устанавливая атрибут style , передавая ему ссылку на стиль @style/Text :

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

Наследование стилей

Наследование с помощью слова parent

Теперь давайте усложним задачу. Пусть первый текст будет тёмно синим, а второй – тёмно зелёным. Мы можем воспользоваться наследованием стилей. Создадим два новых стиля, которые будут наследовать стиль Text :

И применим эти стили в файле activity_main.xml :

Наследование с помощью символа . (точка)

Также есть возможность наследовать стили, используя символа . (точка). Изменим стили :

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

Но у такого подхода есть ограничение: мы не можем его применять когда наследуемся от каких-то Android стилей, как например стиль AppTheme . В таким случаях мы обязаны использовать ключевое слово parent :

Переопределение атрибутов родительского стиля

Аналогично с наследованием классов в Java, мы можем переопределить атрибуты родительского стиля. Для примера переопределим атрибут textSize :

Папка drawable. Работа с картинками

Чтобы добавить картинку в приложение в первую очередь необходимо скачать картинку и добавить её в папку drawable . Давайте скачаем эту картинку для примера и добавим в папку drawable :

Доступ к картинке из XML кода

Также, как и к строкам, цветам, мы можем обращаться к картинкам из XML кода. Для этого необходимо указать ссылку на картинку в layout файле, используя элемент ImageView и атрибут android:src .

Доступ к картинке из Java кода

Также мы можем отобразить картинку, используя Java код. Выглядит это так:

Вначале мы достаём из ресурсов картинку с помощью getResources().getDrawable(R.drawable.android_jetpack) . Картинка в Java коде имеет тип Drawable . Далее, вызывая метод imageView.setImageDrawable() , мы устанавливаем картинку в ImageView . Можете запустить приложение и убедиться, что результат не изменился.

В Android системе существует намного больше различных ресурсов, таких как font , dimens , arrays . На первых этапах они вам не понадобятся. Но как только возникнет необходимость, вы сможете найти нужный вам ресурс и документацию по нему на официальном сайте.

Заключение

Ресурсы облегчают жизнь Android разработчика. Поэтому всегда используйте их при возможности. Вы потратите чуть больше времени сейчас на их создание, зато сэкономите кучу времени при добавлении новой функциональности в приложение. Сегодня вы познакомились с простейшей локализацией, использованием стилей, цветов и увидели реальную пользу от применения ресурсов.

Источник

Оцените статью