Ответы:
Это лучший инструмент, который вы можете использовать для всех видов, и БЕСПЛАТНО благодаря @ Jérôme Van Der Linden .
Генератор цветов Holo для Android позволяет вам легко создавать компоненты 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
Примечание: нам нужно использовать app: 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. Это специально для Киткат и выше. Измените его родительский на AppBaseTheme и убедитесь, что избавился от «colorAccent», чтобы он не перекрывал цвет родителя. Также вам нужно сохранить элементы, относящиеся к версии 19. Тогда это будет выглядеть так.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
Это довольно просто (обязательно: минимум API 21) ...
Продолжайте кодировать ........ :)
Цвет линии определяется EditText
свойством background. Чтобы изменить его, вы должны изменить android:background
в файле макета.
Я должен отметить, что этот стиль достигается с помощью 9-патч. Если вы посмотрите в SDK, то увидите, что фон EditText
этого изображения:
Чтобы изменить его, вы можете открыть его в программе для работы с изображениями и раскрасить его в нужный цвет. Сохраните это как bg_edit_text.9.png
и затем поместите это в свою папку drawable. Теперь вы можете применить его в качестве фона для вашего 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"/>
рисуем / 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
with пространства имен. т.е.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>