Установить цвет курсора EditText
у меня возникла эта проблема, когда я использую тему Holo Android на планшетном проекте. Однако, у меня есть фрагмент на экране, который имеет белый фон. Я добавляю EditText
компонент на этом фрагменте. Я попытался переопределить тему, установив фон голограммы.Легкие тематические ресурсы. Однако мой текстовый курсор (карат) остается белым и, следовательно, невидимым на экране (я могу определить его слабо в поле edittext..).
кто-нибудь знает, как я могу получить EditText использовать более темный цвет курсора? Я попытался установить стиль EditText в "@android:style/Widget.Holo.Light.EditText"
без положительного результата.
15 ответов:
задание до
@null
должно привести к использованиюandroid:textColor
как цвет курсора.атрибут "textCursorDrawable" доступен в API уровня 12 и выше
В Структуре
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textCursorDrawable="@drawable/color_cursor" />
затем создайте drawable xml: color_cursor
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="3dp" /> <solid android:color="#FFFFFF" /> </shape>
у вас есть белый цветной курсор на свойстве EditText.
кажется, что все ответы идут вокруг кустов.
в своем
EditText
, воспользуйтесь свойством:android:textCursorDrawable="@drawable/black_cursor"
и добавить drawable
black_cursor.xml
к вашим ресурсам, следующим образом:<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="1dp" /> <solid android:color="#000000"/> </shape>
Это также способ создать более разнообразные курсоры, если вам нужно.
есть новый способ изменить цвет курсора в последнем
Appcompact
v21
Просто изменитьcolorAccent
в таком стиле:<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette--> <!-- colorPrimary is used for the default action bar background --> <item name="colorPrimary">#088FC9</item> <!-- colorPrimaryDark is used for the status bar --> <item name="colorPrimaryDark">#088FC9</item> <!-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets --> <!-- THIS IS WHAT YOU'RE LOOKING FOR --> <item name="colorAccent">#0091BC</item> </style>
затем применить этот стиль на тему вашего приложения или деятельности.
обновление: этот способ работает только на API 21+
обновление 2: я не уверен, что минимальная версия android, что он может работать.
протестировано версией android:2.3.7 - didn't work 4.4.4 - worked 5.0 - worked 5.1 - worked
Я нашел ответ :)
Я установил стиль editText темы:
<item name="android:editTextStyle">@style/myEditText</item>
затем я использовал следующий drawable для установки курсора:
'
<style name="myEditText" parent="@android:style/Widget.Holo.Light.EditText"> <item name="android:background">@android:drawable/editbox_background_normal</item> <item name="android:textCursorDrawable">@android:drawable/my_cursor_drawable</item> <item name="android:height">40sp</item> </style>
'
android: textCursorDrawable здесь ключевое.
для всех, кто должен установить
EditText
цвет курсора динамически, ниже вы найдете два способа достичь этого.
во-первых, создать курсор drawable:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ff000000" /> <size android:width="1dp" /> </shape>
установите курсор drawable resource id в drawable вы создали (https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564">source)):
try { Field f = TextView.class.getDeclaredField("mCursorDrawableRes"); f.setAccessible(true); f.set(yourEditText, R.drawable.cursor); } catch (Exception ignored) { }
чтобы просто изменить цвет курсора по умолчанию drawable, вы можете использовать следующий метод:
public static void setCursorDrawableColor(EditText editText, int color) { try { Field fCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes"); fCursorDrawableRes.setAccessible(true); int mCursorDrawableRes = fCursorDrawableRes.getInt(editText); Field fEditor = TextView.class.getDeclaredField("mEditor"); fEditor.setAccessible(true); Object editor = fEditor.get(editText); Class<?> clazz = editor.getClass(); Field fCursorDrawable = clazz.getDeclaredField("mCursorDrawable"); fCursorDrawable.setAccessible(true); Drawable[] drawables = new Drawable[2]; Resources res = editText.getContext().getResources(); drawables[0] = res.getDrawable(mCursorDrawableRes); drawables[1] = res.getDrawable(mCursorDrawableRes); drawables[0].setColorFilter(color, PorterDuff.Mode.SRC_IN); drawables[1].setColorFilter(color, PorterDuff.Mode.SRC_IN); fCursorDrawable.set(editor, drawables); } catch (final Throwable ignored) { } }
опоздал на вечеринку,вот мой ответ,
это для людей, которые не хотите изменить
colorAccent
в их родительской теме, но хочет изменитьEditText
атрибуты!этот ответ демонстрирует, как изменить ......
- цвет нижней строки
- цвет Курсора
- цвет указателя Курсора (я использовал свое собственное изображение).......... из
EditText
использование стиля деятельности тема.<android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hey" />
пример:
<style name="AppTheme.EditText" parent="@style/Widget.AppCompat.EditText"> <item name="android:textColor">@color/white</item> <item name="android:textColorHint">#8AFFFFFF</item> <item name="android:background">@drawable/edit_text_background</item> // background (bottom line at this case) <item name="android:textCursorDrawable">@color/white</item> // Cursor <item name="android:textSelectHandle">@drawable/my_white_icon</item> // For pointer normal state and copy text state <item name="android:textSelectHandleLeft">@drawable/my_white_icon</item> <item name="android:textSelectHandleRight">@drawable/my_white_icon</item> </style>
Теперь создайте drawable(
edit_text_background
) добавить XML-ресурс для фона!Вы можете настроить, как вы хотите!<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="0dp" 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
темы что.<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Your Theme data --> <item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this </style>
Edittext cursor color you want changes your color. <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:textCursorDrawable="@drawable/color_cursor" />
затем создайте drawalble xml:
color_cursor
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="3dp" /> <solid android:color="#FFFFFF" /> </shape>
для меня я изменил как AppTheme и значение цвета.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorControlNormal">@color/yellow</item> <item name="colorAccent">@color/yellow</item> </style>
здесь цвета.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="yellow">#B7EC2A</color> </resources>
Я достал атрибут android: textCursorDrawable для @null, который я разместил внутри стиля editText. Когда я попытался использовать это, цвета не изменятся.
Вау я очень поздно на эту вечеринку, но у нее была активность 17 дней назад Это будет шов нам нужно рассмотреть вопрос о публикации какой версии Android мы используем для ответа так как сейчас этот ответ работает с Android 2.1 и выше Перейдите в RES / VALUES / STYLES и добавьте строки кода ниже, и ваш курсор будет черным
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <!--<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">--> <!-- Customize your theme here. --> <item name="colorControlActivated">@color/color_Black</item> <!--Sets COLOR for the Cursor in EditText --> </style>
вам понадобится эта строка кода в папке RES/COLOR
<color name="color_Black">#000000</color>
почему сообщение так поздно ? Было бы неплохо рассмотреть некоторые формы категории для многих возглавил монстр Android стал!
editcolor.xml
android:textCursorDrawable="@drawable/editcolor"
в xml файле задан цветовой код
edittext
цвет фона
Это даже проще, чем это.
<style name="MyTextStyle"> <item name="android:textCursorDrawable">#000000</item> </style>
это работает в ICS и за его пределами. Я не тестировал его в других версиях.
единственный правильный ответ должен быть изменить тему работы:
<item name="colorAccent">#000000</item>
Вы не должны использоватьandroid:textCursorDrawable
to@null
потому что это касается только самого курсора, но не пин под курсором при перетаскивании курсора. Тематическое решение-самое серьезное.
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">#36f0ff</item> <item name="colorPrimaryDark">#007781</item> <item name="colorAccent">#000</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
изменить цвет colorAccent в стилях.Хм, вот это просто