Відповіді:
Це найкращий інструмент, який ви можете використовувати для всіх поглядів та його БЕЗКОШТОВНО завдяки завдяки @ Jérôme Van Der Linden .
Генератор кольорів Android Holo дозволяє легко створювати компоненти для Android, такі як EditText
або спінер, за допомогою власних кольорів для програми Android. Він створить усі необхідні дев'ять патч-ресурсів, а також пов'язані з ними XML-графіки та стилі, які ви можете скопіювати прямо у ваш проект.
ОНОВЛЕННЯ 1
Здається, цей домен минув, але проект є відкритим кодом, який ви можете знайти тут
Спробуй це
це зображення поставлено на задньому плані EditText
android:background="@drawable/textfield_activated"
ОНОВЛЕННЯ 2
Для API 21 або новішої версії ви можете використовувати android:backgroundTint
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
android:backgroundTint="@android:color/holo_red_light" />
Оновлення 3
Зараз у нас є підтримка ззадуAppCompatEditText
Примітка: нам потрібно використовувати додаток: backgroundTint замість android: backgroundTint
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
app:backgroundTint="@color/blue_gray_light" />
Мені не подобаються попередні відповіді. Найкращим рішенням є використання:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
для EditText
роботи лише на API21 + . Через це ми маємо використовувати бібліотеку підтримки та AppCompatEditText
.
Примітка: ми маємо використовувати app:backgroundTint
замість цьогоandroid:backgroundTint
Версія AndroidX
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Ви також можете швидко змінити колір підкреслення EditText, відтіняючи фон EditText так:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
для API нижче 21, ви можете використовувати атрибут теми в EditText
коді, розміщеному нижче, у файлі стилю
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
використовувати цей стиль в EditText
якості
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="@dimen/user_input_field_height"
android:layout_marginTop="40dp"
android:hint="@string/password_hint"
android:theme="@style/MyEditTextTheme"
android:singleLine="true" />
Програмно можна спробувати:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
я думаю, що найкращий спосіб - за темами:
<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorControlNormal">@color/black</item>
<item name="colorControlActivated">@color/action_blue</item>
<item name="colorControlHighlight">@color/action_blue</item>
</style>
<style name="AddressBookStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">13sp</item>
<item name="android:theme">@style/MyEditTextTheme</item>
</style>
<android.support.v7.widget.AppCompatEditText
style="@style/AddressBookStyle"/>
Щоб змінити колір підкреслення Edittext:
Якщо ви хочете, щоб весь додаток поділяв цей стиль, тоді ви можете зробити наступний спосіб.
(1) перейдіть у файл styles.xml. Ваша AppTheme, яка успадковує батьківську програму Theme.AppCompat.Light.DarkActionBar (у моєму випадку) буде базовим батьківським для всіх файлів стилів у вашому додатку. Змініть його назву на "AppBaseTheme". Створіть інший стиль прямо під ним, який має ім’я AppTheme та успадковує від AppBaseTheme, який ви тільки що редагували. Це виглядатиме так:
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
<item name="colorPrimary">@color/material_brown_500</item>
<item name="colorPrimaryDark">@color/material_brown_700</item>
<item name="colorAccent">@color/flamingo</item>
<style name="AppTheme" parent="AppBaseTheme">
<!-- Customize your theme here. -->
</style>
Потім змініть "colorAccent" на будь-який колір, яким ви бажаєте бути кольором рядка EditText.
(2) Якщо у вас є інші папки значень з style.xml, цей крок дуже важливий. Тому що цей файл успадкує від попереднього батьківського xml-файлу. Наприклад, у мене є значення-19 / styles.xml. Це спеціально для Kitkat та вище. Змініть її батьківську програму на AppBaseTheme і переконайтеся, що вона позбулася "colorAccent", щоб вона не перекривала колір батьків. Також потрібно зберегти елементи, характерні для версії 19. Тоді це буде виглядати приблизно так.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
Його досить просто (Обов’язково: Мінімальний API 21) ...
Зберігати кодування ........ :)
Колір лінії визначається EditText
властивістю фона. Щоб змінити його, слід змінитиandroid:background
файл у макеті.
Слід зазначити, що цей стиль досягається за допомогою малювання 9 патчів. Якщо ви подивитесь на SDK, ви побачите, що фоном EditText
цього зображення є:
Щоб змінити його, ви можете відкрити його в програмі маніпулювання зображенням і пофарбувати його в потрібний колір. Збережіть його як bg_edit_text.9.png
і потім помістіть у папку, що витягується. Тепер ви можете застосувати його як тло для вашого EditText
подібного:
android:background="@drawable/bg_edit_text"
Ви можете змінити колір EditText програмно лише за допомогою цього рядка коду:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Фон віджетів залежить від рівня API .
АЛЬТЕРНАТИВ 1
Ви можете надати користувальницьке зображення для EditText
фону за допомогою
android:background="@drawable/custom_editText"
Ваш образ повинен виглядати приблизно так. Це дасть вам бажаний ефект.
АЛЬТЕРНАТИВ 2
Встановіть цей xml у свій EditText
атрибут фону.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#4C000000"/>
<corners android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
</shape>
Це буде мати однаковий вигляд EditText
у кожному API.
Можна змінити колір за допомогою тонування фону
<EditText
android:backgroundTint="@color/red"/>
dravable / bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorDivider" />
</shape>
</item>
</layer-list>
Встановити EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Скористайтеся цим методом .. і змініть його відповідно до імен перегляду ур. Цей код чудово працює.
private boolean validateMobilenumber() {
if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
input_layout_mobilenumber.setErrorEnabled(true);
input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
// requestFocus(mobilenumber);
return false;
} else {
input_layout_mobilenumber.setError(null);
input_layout_mobilenumber.setErrorEnabled(false);
mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
}
Якщо ви хочете рівну лінію, ви можете це легко зробити з xml. Ось приклад xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="-1dp"
android:left="-1dp"
android:right="-1dp"
android:bottom="1dp"
>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#6A9A3A"/>
</shape>
</item>
</layer-list>
Замініть фігуру селектором, якщо ви хочете надати різну ширину та колір для зосередженого редагування тексту.
Кращий підхід полягає у використанні AppCompatEditText
з backgroundTint
атрибутом app
простору імен. тобто
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
коли ми android:backgroundTint
його використовуємо, він працюватиме лише в API21 або більше, але app:backgroundTint
працює на всіх рівнях API, які працює у вашому додатку.
<EditText
android:id="@+id/et_password_tlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#9e9e9e"
android:backgroundTint="#000"
android:singleLine="true"
android:drawableTint="#FF4081"
android:paddingTop="25dp"
android:textColor="#000"
android:paddingBottom="5dp"
android:inputType="textPassword"/>
<View
android:id="@+id/UnderLine"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/et_password_tlay"
android:layout_centerHorizontal="true"
android:background="#03f94e" />
** це робити з видом **
Спробуйте наступним чином, він перетворить колір нижнього рядка EditText, коли він використовується як фонове властивість.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="@dimen/spacing_neg"
android:right="@dimen/spacing_neg"
android:top="@dimen/spacing_neg">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="@dimen/spacing_1"
android:color="@android:color/black" />
</shape>
</item>
</layer-list>