Я хотел бы изменить синий цвет под текстом редактирования, я не знаю, что это за свойство.
Я пробовал использовать для него другой цвет фона, но это не сработало.
Я прикрепил изображение ниже:
Я хотел бы изменить синий цвет под текстом редактирования, я не знаю, что это за свойство.
Я пробовал использовать для него другой цвет фона, но это не сработало.
Я прикрепил изображение ниже:
Ответы:
На самом деле довольно легко установить цвет подчеркивания EditText программно (всего одна строка кода).
Чтобы установить цвет:
editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
Чтобы удалить цвет:
editText.getBackground().clearColorFilter();
Примечание: когда EditText находится в фокусе , установленный вами цвет не вступает в силу, вместо этого он имеет цвет фокуса.
Справочник по API:
Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
Renderer
вы отменяете? Я пытаюсь понять, как заставить это работать для панели поиска.
SearchBarRenderer
это не типа EditText
. Не могу заставить его работать.
Используйте android:backgroundTint=""
в своем EditText
XML-макете.
Для api <21 вы можете использовать AppCompatEditText
из библиотеки поддержки, затемapp:backgroundTint=""
android:background="@null"
для устройств с api <21.
Вы должны использовать другое фоновое изображение, а не цвет для каждого состояния EditText
(фокус, включен, активирован).
http://android-holo-colors.com/
На сайте выше вы можете получить изображения из множества компонентов в теме Holo. Просто выберите «EditText» и нужный цвет. Вы можете увидеть предварительный просмотр внизу страницы.
Загрузите файл .zip и скопируйте и вставьте ресурсы в свой проект (изображения и XML).
если ваш XML называется: apptheme_edit_text_holo_light.xml (или что-то подобное):
Перейдите в свой XML-файл "styles.xml" и добавьте собственный EditText
стиль:
<style name="EditTextCustomHolo" parent="android:Widget.EditText">
<item name="android:background">@drawable/apptheme_edit_text_holo_light</item>
<item name="android:textColor">#ffffff</item>
</style>
Просто сделайте это в своем EditText
:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/EditTextCustomHolo"/>
И все, надеюсь, это вам поможет.
Это отлично работает как для старой, так и для новой версии Android (отлично работает даже с API 10!).
Определите этот стиль в своем styles.xml
:
<style name="EditText.Login" parent="Widget.AppCompat.EditText">
<item name="android:textColor">@android:color/white</item>
<item name="android:textColorHint">@android:color/darker_gray</item>
<item name="colorAccent">@color/blue</item>
<item name="colorControlNormal">@color/blue</item>
<item name="colorControlActivated">@color/blue</item>
</style>
А теперь в вашем XML установите это как тему и стиль ( стиль, который нужно установить textColor
, и тему, чтобы установить все остальные вещи):
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
style="@style/EditText.Login"
android:theme="@style/EditText.Login"/>
Это решение вызывает крошечный сбой пользовательского интерфейса в более новых версиях Android (Lollipop или Marshmallow и далее), маркеры выделения которых подчеркнуты.
Этот вопрос обсуждается в этой ветке . (Я лично не пробовал это решение)
Вы можете изменить Подчеркивание из EditText цвета с указанием его в styles.xml . В вашей теме приложения styles.xml добавьте следующее.
<item name="android:textColorSecondary">@color/primary_text_color</item>
Как отметила Ана в разделе комментариев
<item name="android:colorControlActivated">@color/black</item>
установка этого в стиле темы хорошо работает для изменения цвета подчеркивания текста редактирования.
android:textColorSecondary
это также используется для определения цвета стрелки назад и DrawerLayout
значка гамбургера в ActionBar.
<item name="colorControlNormal">@color/edittext_underline_color</item>
вместо textColorSecondary из-за проблемы с раскраской панели навигации.
Итак, вам нужно создать новый файл .xml в папке с возможностью рисования.
В этот файл вставьте этот код:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="8dp"
android:left="-3dp"
android:right="-3dp"
android:top="-3dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/white"/>
</shape>
</item>
</layer-list>
И в вашем EditText установите
android:background="@drawable/your_drawable"
Вы можете поиграть со своим рисованным XML, установить углы, отступы и т. Д.
В своем стиле приложения определите свойство colorAccent . Здесь вы найдете пример
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/action_bar</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/action_bar</item>
</style>
Вы можете программно изменить цвет EditText, просто используя эту строку кода:
edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Используйте приведенный ниже код, чтобы изменить цвет фона границы редактирования текста.
Создайте новый файл XML в разделе drawable.
abc.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00000000" />
<stroke android:width="1dip" android:color="#ffffff" />
</shape>
и добавьте его в качестве фона вашего текста редактирования
android:background="@drawable/abc"
Чтобы изменить цвет нижней строки, вы можете использовать это в своей теме приложения:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">#ffe100</item>
<item name="colorControlHighlight">#ffe100</item>
</style>
Чтобы изменить цвет плавающей метки, напишите следующую тему:
<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>
и используйте эту тему в своем макете:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">
<EditText
android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:capitalize="characters"
android:hint="User Name"
android:imeOptions="actionNext"
android:inputType="text"
android:singleLine="true"
android:textColor="@android:color/white" />
</android.support.design.widget.TextInputLayout>
Вы можете сделать это с помощью AppCompatEditText и селектора цвета:
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:backgroundTint="@color/selector_edittext_underline" />
selector_edittext_underline.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/focused_color"
android:state_focused="true" />
<item android:color="@color/hint_color" />
</selector>
Если вам не нужно поддерживать устройства с API <21, используйте backgroundHint в xml, например:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="Task Name"
android:ems="10"
android:id="@+id/task_name"
android:layout_marginBottom="15dp"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textColorLink="@color/blue"
android:textColorHint="@color/blue"
android:backgroundTint="@color/lighter_blue" />
Для лучшей поддержки и откатов используйте решение @Akariuz. backgroundHint - наиболее безболезненное решение, но оно не имеет обратной совместимости, исходя из ваших требований.
Просто измените android: backgroundTint в xml-коде на свой цвет