Я хотів би змінити синій колір під текстом редагування, я не знаю, що це за властивість.
Я спробував використати для нього інший колір фону, але це не вийшло.
Я долучив зображення нижче:
Я хотів би змінити синій колір під текстом редагування, я не знаю, що це за властивість.
Я спробував використати для нього інший колір фону, але це не вийшло.
Я долучив зображення нижче:
Відповіді:
Насправді досить просто встановити підкреслений колір 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.
AppCompatEditText
Тоді для api <21 ви можете використовувати з бібліотеки підтримки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>
Як зазначає Ana в розділі коментарів
<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-файл під малюнком.
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 - це найбільш безболісне рішення, але не сумісне із зворотним бажанням, виходячи з ваших вимог телефонувати.
змінити ваш colorAccent
колір, який вам потрібен, щоб встановити колір, colorAccent
і запустіть, ви отримаєте вихід
Просто змініть android: backgroundTint у xml-коді на свій колір