Intereting Posts
Самый эффективный способ изменения размера растровых изображений на Android? Каково разумное значение для размера SD-карты для AVD? Проблемы с проблемой AlertDialog Могут ли приложения Android 4.0 работать с устройствами Android 2.0 и Android 3.0? Divider не работает для TitlePageIndicator с viewpagerindicator и actionbarsherlock Узнав, когда закончен MotionEvent Как изменить все переходы активности сразу в приложении Android? Inflating AppBarLayout с помощью панели инструментов + TabLayout Как решить «Код версии вашего APK должен быть выше 2.» в консоли разработчика Google Play? Местоположение Android SDK не настроено в настройках в 64-битных Windows Индикатор обновления SweepRefreshLayout Android не отображается Как разместить макет поверх layout.setZOrderOnTop () Tesseract OCR Android tessdata каталог не найден Как использовать getString () для статической строки перед onCreate ()? Как установить активный элемент в раскрывающемся меню «Панель действий»?

Изменить цвет курсора edittext

Как я могу изменить цвет курсора EditText's ?

В Android 4.0 и выше цвет курсора белый. И если фон EditText также белый, он становится невидимым.

Solutions Collecting From Web of "Изменить цвет курсора edittext"

В свойствах EditText имеется атрибут android:textCursorDrawable

Теперь установите значение @null как,

android:textCursorDrawable="@null"

Итак, теперь ваш курсор EditText совпадает с вашим TextTolor EditText.

Ссылка из набора цвета курсора 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> 

Затем я определяю образец EditText в макетах.

 <?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textCursorDrawable="@drawable/blackpipe" > </EditText> 

Когда я хочу создать EditText во время выполнения, я использую это:

 AttributeSet editText30AttributeSet = null; int res = getResources().getIdentifier("edit30", "layout", getPackageName());//edit30 is EditText layout XmlPullParser parser = getResources().getXml(res); int state=0; do { try { state = parser.next(); } catch (Exception e1) { e1.printStackTrace(); } if (state == XmlPullParser.START_TAG) { if (parser.getName().equals("EditText")) { editText30AttributeSet = Xml.asAttributeSet(parser); break; } } } while(state != XmlPullParser.END_DOCUMENT); EditText view = new EditText(getContext(),editText30AttributeSet); 

Теперь у вас есть вид EditText с черным курсором. Может быть, кто-то может улучшить мое решение, чтобы курсор можно было изменить во время выполнения.

Вот, что я думаю, лучшее решение, чем опубликовал @Adem.

Ява:

 try { // https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564 Field f = TextView.class.getDeclaredField("mCursorDrawableRes"); f.setAccessible(true); f.set(yourEditText, R.drawable.cursor); } catch (Exception ignored) { } 

XML:

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

Как насчет styles.xml с помощью AppCompat-v7?

 <item name="colorControlNormal">@color/accentColor</item> <item name="colorControlActivated">@color/accentColor</item> <item name="colorControlHighlight">@color/accentColor</item> 

Работает для меня (этот пример упрощен).

Улучшение ответа Джареда Раммера

Ява:

 try { // https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564 Field f = TextView.class.getDeclaredField("mCursorDrawableRes"); f.setAccessible(true); f.set(yourEditText, R.drawable.cursor); } catch (Exception ignored) { } 

Создать custom_cursor.xml в папке res / 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" /> 

XML:

 <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textCursorDrawable="@drawable/custom_cursor" > </EditText> 

Итак, вот финальная версия – не нужен XML и работает как @null, но программно:

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

Единственная проблема заключается в том, что он может перестать работать в один прекрасный день с новой версией Android.

PS Я тестировал его на 4.1.2 до 5.1.

Вы можете установить атрибут android:textCursorDrawable в @null что приведет к использованию android:textColor в качестве цвета курсора.

Атрибут textCursorDrawable доступен в уровне API 12 и выше …

Благодаря…