it-swarm.com.ru

Как изменить цвет линии в EditText

Я создаю EditText в моем файле макета XML 

Но я хочу изменить цветовую линию в EditText с Holo на (например) красный . Как это можно сделать? 

enter image description here

135
Alex

Это лучший инструмент, который вы можете использовать для всех видов, и БЕСПЛАТНО благодаря @ Jérôme Van Der Linden

Генератор цветов Holo для Android позволяет легко создавать компоненты Android, такие как EdiText или спиннер, с собственными цветами для приложения Android. Он сгенерирует все девять необходимых исправлений, а также соответствующие XML-элементы и стили, которые вы можете скопировать прямо в ваш проект.

http://Android-holo-colors.com/

ОБНОВЛЕНИЕ 1

Срок действия этого домена истек, но проект с открытым исходным кодом вы можете найти здесь

https://github.com/jeromevdl/Android-holo-colors

попытайся

это изображение помещено в фон EditText

Android:background="@drawable/textfield_activated"

enter image description here


ОБНОВЛЕНИЕ 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" />
209
MilapTank

Мне не нравятся предыдущие ответы. Лучшее решение - использовать:

<Android.support.v7.widget.AppCompatEditText

      app:backgroundTint="@color/blue_gray_light" />

Android: backgroundTint для EditText работает только на API21 + . Из-за этого мы должны использовать библиотеку поддержки и AppCompatEditText

Примечание: мы должны использовать app: backgroundTint вместо Android: backgroundTint.

148
Mladen Rakonjac

Вы также можете быстро изменить цвет подчеркивания 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" />
66
Damian Esteves

Программно вы можете попробовать:

editText.getBackground().mutate().setColorFilter(getResources().getColor(Android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
17
doctorram

для API ниже 21 вы можете использовать атрибут theme в edittext поместите код ниже в файл стиля

<style name="MyEditTextTheme">
        <item name="colorControlNormal">#FFFFFF</item>
        <item name="colorControlActivated">#FFFFFF</item>
        <item name="colorControlHighlight">#FFFFFF</item>
    </style>

использовать этот стиль в тексте редактирования как 

<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" />
10
Rahul

я думаю, что лучший способ по теме:

<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="addressbookitem_edit_style" 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>

<Android.support.v7.widget.AppCompatEditText
            style="@style/addressbookitem_edit_style"/>
10
j2emanue

Чтобы изменить цвет подчеркивания 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>
9
Suhyun Kim

Цвет строки определяется свойством background EditText. Чтобы изменить его, вы должны изменить Android:background в файле макета.

Я должен отметить, что этот стиль достигается с помощью 9-патч. Если вы посмотрите в SDK, то увидите, что фон EditText - это изображение:

textfield_activated_holo_light.9.png

Чтобы изменить его, вы можете открыть его в программе для работы с изображениями и раскрасить его в нужный цвет. Сохраните его как bg_edit_text.9.png, а затем поместите в папку для рисования. Теперь вы можете применить его в качестве фона для вашего EditText, например так:

Android:background="@drawable/bg_edit_text"
6
Egor Neliuba

Это довольно просто (обязательно: минимум 21 API) ... 

  1. Перейдите в свой XML и выберите поле EditText
  2. На правой стороне вы можете увидеть окно «Атрибуты». Выберите «Просмотреть все атрибуты»
  3. Просто найдите «оттенок»
  4. И добавьте/измените 'backgroundTint' на желаемый гекс цвета (скажем, # FF0000)

 enter image description here

 enter image description here

Продолжайте кодировать ........ :)

5
Krishna Raj Salim

Вы можете изменить цвет с тонировкой фона <EditText Android:backgroundTint="@color/red"/> 

4
danish

Фон виджетов зависит от уровня API.

АЛЬТЕРНАТИВА 1

Вы можете предоставить собственное изображение для своего EditText фона: 

Android:background="@drawable/custom_editText"

Ваше изображение должно выглядеть примерно так. Это даст вам желаемый эффект.

enter image description here

АЛЬТЕРНАТИВА 2

Установите этот xml в свой атрибут EditText background.

<?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.

4
CodeWarrior

Если вам нужна плоская линия, вы можете легко это сделать с помощью 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>

Замените фигуру селектором, если вы хотите задать другую ширину и цвет для сфокусированного текста редактирования.

3
Sfseyhan

Вы можете изменить цвет EditText программно, используя следующую строку кода: edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));

3
matin ashtiani

Используйте этот метод .. и измените его в соответствии с вашими именами. Этот код прекрасно работает.

 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());
            }
2
Shahid Sarwar

Наилучшим подходом является использование атрибута 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, которые работает в вашем приложении.

2
Ankush
 <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" />

** это одно из дел с видом **

1
Singupurapu prudhvi raj

Попробуйте следующим образом, он преобразует цвет нижней строки 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>
1
ashishdhiman2007

Используйте Android: свойство background для этого текста редактирования. Передайте в нее свое нарисованное изображение папки . Например,

Android:background="@drawable/abc.png"
1
VVB

Это можно просто сделать, включив этот Android:theme="@style/AppTheme.AppBarOverlay в качестве атрибута для вашего editText И добавив этот <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> в свои стили

0
nivla360

drawable/bg_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:gravity="bottom">
        <shape>
            <size Android:height="1dp" />
            <solid Android:color="@Android:color/black" />
        </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"/>
0
Ketan Ramani