Пользовательский курсор, рисуемый для EditText, игнорируется в API Q+.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пользовательский курсор, рисуемый для EditText, игнорируется в API Q+.

Сообщение Anonymous »

Я хочу установить пользовательский объект рисования в качестве курсора для EditText.
Для API < Android Q Я использую отражение, и оно работает так, как задумано. Начиная с Android Q, у нас есть удобный метод setTextCursorDrawable(@Nullable Drawable textCursorDrawable). Я использую его следующим образом:

Код: Выделить всё

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
textCursorDrawable = ContextCompat.getDrawable(context,R.drawable.drawable_cursor)!!.tintDrawable(color)
}
Где находится методtintDrawable:

Код: Выделить всё

private fun Drawable.tintDrawable(@ColorInt color: Int): Drawable {
return when (this) {
is VectorDrawableCompat -> this.apply { setTintList(ColorStateList.valueOf(color)) }
is VectorDrawable -> this.apply { setTintList(ColorStateList.valueOf(color)) }
else -> {
val wrappedDrawable = DrawableCompat.wrap(this)
DrawableCompat.setTint(wrappedDrawable, color)
DrawableCompat.unwrap(wrappedDrawable)
}
}
}
и R.drawable.drawable_cursor — это просто прямоугольник: НО видимого эффекта вообще нет. Даже без применения оттенка курсора рисование остается прежним.
В документации упоминается, что

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

Поэтому я подумал, что мне нужно вручную скрыть курсор и сделать его виден через метод setCursorVisible, но все еще нет эффект.
Есть ли у кого-нибудь идеи, что я делаю неправильно?

Подробнее здесь: https://stackoverflow.com/questions/646 ... d-on-api-q
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»