光标在 KitKat 上的空自定义 EditText 中不可见

Cursor is not visible in empty custom EditText on KitKat

我创建了一个扩展 android.widget.EditText 的自定义 EditText class。当 运行 KitKat 和以前的 OS 版本上的应用程序时,如果自定义 EditText 为空,则不会出现光标。输入文本后就会出现。

我尝试了在此站点上发布的多种解决方案,包括将 android:textCursorDrawable="@null"android:textIsSelectable="true" 添加到 XML 以及以编程方式添加这些属性。 None 这些解决方案有效。

自定义 EditText 确实有我正在设置的背景,但它必须存在。设计限制意味着我必须设置非默认背景。

那么问题来了,当自定义 EditText 为空时,如何让光标出现?

这里是自定义视图的XML:

<?xml version="1.0" encoding="utf-8"?>
<com.example.CustomEditText
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:background="@drawable/custom_edit_text_background"
    android:gravity="start"
    android:imeOptions="actionDone"
    android:inputType="textCapSentences|textMultiLine"
    android:maxLines="5"
    android:padding="@dimen/custom_padding"
    android:textAppearance="@style/TextAppearance.AppCompat.Medium"
    android:textColor="@color/custom_color"/>

对于初学者,如果光标首先受到其他任何影响(例如 android:gravity="start"android:textAppearance="@style/TextAppearance.AppCompat.Medium"),则从 XML.See 中一次删除一个项目。

然后 post 你的 @drawable/custom_edit_text_background 这样我们就可以看到 XML。最后,post你的classCustomEditText。您可能无意中在其中造成了问题。


这些可能有帮助:

  • Edittext cursor is invisible in android 4.0
  • 属性 textCursorDrawable 在 API 12 级及更高
  • 中可用
  • android:cursorVisible="true"
  • Set EditText cursor color

我找到的解决方案是在自定义 EditText 上设置一个 minWidth40dp 的值对我有用。现在光标会出现在视图中,即使是空的。

只需添加对我有用的解决方案: 我在 EditText 上设置 hint 属性。但是不能为空,所以我使用了空格。

以我为例android:hint=" "