android - поменять - как увеличить курсор мыши на андроид




Установка цвета курсора EditText (10)

У меня возникает эта проблема, когда я использую тему Голо на Android в проекте планшета. Тем не менее, у меня есть фрагмент на экране, который имеет белый фон. Я добавляю компонент EditText на этот фрагмент. Я попытался переопределить тему, установив фон ресурсов темы Holo.Light. Однако мой текстовый курсор (карат) остается белым и, следовательно, невидимым на экране (я могу заметить его слабо в поле edittext ..).

Кто-нибудь знает, как я могу заставить EditText использовать более темный цвет курсора? Я попытался установить стиль EditText на "@android:style/Widget.Holo.Light.EditText" без положительного результата.


Wow я действительно опоздал на эту вечеринку, но у нее была активность 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!


В макете

<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 , ниже вы найдете два способа достижения этого.

Во-первых, создайте курсор для рисования:

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

Установите идентификатор ресурса с возможностью перемещения курсора, который вы создали (https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564"> источник)). :

try {
    Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
    f.setAccessible(true);
    f.set(yourEditText, R.drawable.cursor);
} catch (Exception ignored) {
}

Чтобы просто изменить цвет курсора по умолчанию, можно использовать следующий метод:

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) {
    }
}

Единственным допустимым ответом должно быть изменение темы активности: <item name="colorAccent">#000000</item> Нельзя использовать android:textCursorDrawable для @null потому что это касается только самого курсора, но не булавки под курсором, если вы хотите перетащить этот курсор. Тематическое решение является самым серьезным.


Поздно к вечеринке, вот мой ответ,

Это для людей, которые не хотят менять colorAccent в своей родительской теме, но хотят изменить атрибуты EditText !

Этот ответ показывает, как изменить ......

  1. Цвет нижней линии
  2. Цвет курсора
  3. Цвет указателя курсора (я использовал свой собственный образ) .......... из EditText используя стиль, применяемый к теме Activity.

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

Теперь создайте edit_text_background ( 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 тему editText .

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Your Theme data -->
    <item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this
</style>

Существует новый способ изменения цвета курсора в последней Appcompact 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

Это еще проще.

<style name="MyTextStyle">
    <item name="android:textCursorDrawable">#000000</item>
</style>

Это работает в ICS и за ее пределами. Я не тестировал его в других версиях.


Я нашел ответ :)

Я установил стиль editText для темы:

<item name="android:editTextStyle">@style/myEditText</item>

Затем я применил следующий набор для установки курсора:

`

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


editcolor.xml

android:textCursorDrawable="@drawable/editcolor"

В xml-файле установлен цветовой код edittext фона edittext


<!-- 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" />

измените цвет этого цвета в стилях.xm, это просто







android-styles