Изменение цвета нижней линии EditText в appcompat v7

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы изменить цвет подчеркивающей линии EditText в AppCompat v7, вам потребуется следующий фрагмент кода:

Java
Скопировать код
ColorStateList colorStateList = ColorStateList.valueOf(Color.RED);
yourEditText.setBackgroundTintList(colorStateList);
Кинга Идем в IT: пошаговый план для смены профессии

Настройка темы приложения для EditText

Разбор атрибутов темы и их влияния

Для оформления элементов EditText в вашем приложении вы можете переопределить атрибуты colorControlActivated, colorControlHighlight и colorControlNormal. Это позволит вам управлять цветом нижней строки в зависимости от состояния элемента контроля.

Присвоение улучшенной темы Activity

Для того чтобы применить созданную тему к указанной Activity, добавьте следующее определение в вашу разметку:

xml
Скопировать код
<activity android:name=".FocusedActivityName" android:theme="@style/EnhancedAppTheme"></activity>

Таким образом, ваша тема будет применена ко всем элементам EditText в выбранной Activity.

Создание индивидуальной темы AppCompat

Изъявите эффективность AppCompat, создав свою тему:

xml
Скопировать код
<style name="EnhancedAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlActivated">@color/normal_blue</item>
    <item name="colorControlHighlight">@color/highlighting_purple</item>
    <item name="colorControlNormal">@color/game_of_greys_item</item>
</style>

Совместимость с разными версиями

Для устройств с API уровнем 21 и выше применяйте атрибут android:backgroundTint. Для более ранних версий API используйте app:backgroundTint. Важно корректно применять методы setBackground или setBackgroundDrawable в зависимости от версии API.

Визуализация

Следите за тем, как меняется цвет нижней строки EditText, словно это светофор:

Markdown
Скопировать код
Обычное состояние: 🚦(серый) ==> 🚦(нормальный цвет)

Для изменения цвета воспользуйтесь следующим кодом:

Java
Скопировать код
yourEditText.setBackgroundTintList(ColorStateList.valueOf(Color.BLUE));

И теперь изменение будет выглядеть так:

Markdown
Скопировать код
Синее состояние: 🚦(синий) ==> 🚦(синий цвет)

Для внедрения в AppCompat v7 напишем:

Java
Скопировать код
<EditText
    android:backgroundTint="@color/blue" />

Теперь элемент EditText следует установленным нами правилам!

Советы и технические хитрости для более продвинутых настроек

Настройка конкретного EditText

Если вам нужно настроить внешний вид отдельного EditText, примените следующий код:

Java
Скопировать код
Drawable drawable = yourEditText.getBackground();
drawable.mutate().setColorFilter(ContextCompat.getColor(context, R.color.the_chosen_one), PorterDuff.Mode.SRC_ATOP);
yourEditText.setBackground(drawable);

Использование XML-стилизации для разных уровней API

Определите в XML отдельные цветовые атрибуты для различных уровней API, чтобы обеспечить лучшую совместимость и удобство управления стилями:

xml
Скопировать код
<color name="editTextUnderlineColor">#FF5722</color>

Эффективное применение мутаций Drawable

Функция mutate() обеспечивает уникальное оформление EditText, предотвращая случайные изменения в оформлении других элементов.

Оформление отдельных элементов

При стилизации отдельных элементов с помощью appcompat-v7 убедитесь, что эти изменения не затрагивают общие стили.

Повышение цветовой консистентности

Примените следующий код для обеспечения единого цветового оформления в приложении:

xml
Скопировать код
<EditText
    android:backgroundTint="@color/consistent_color_resource" />

Полезные материалы

  1. EditText | Разработчики Android – документация и описание EditText для Android.
  2. Drawable ресурсы | Разработчики Android – руководство по работе с drawable ресурсами.
  3. Material Design – принципы оформления полей EditText в соответствии с рекомендациями Material Design.
  4. Тематизация с помощью AppCompat от Иэна Лейка | Разработчики Android – обзор методов и советов по созданию тем при помощи AppCompat.
  5. Главная · codepath/android_guides Wiki · GitHub – подробное руководство по стилизации с использованием AppCompat, включая элемент EditText.
  6. Использование App Toolbar | CodePath Android Cliffnotes – рекомендации по настройке панели инструментов и других элементов приложения.