光标在 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
上设置一个 minWidth
。 40dp
的值对我有用。现在光标会出现在视图中,即使是空的。
只需添加对我有用的解决方案:
我在 EditText
上设置 hint
属性。但是不能为空,所以我使用了空格。
以我为例android:hint=" "
我创建了一个扩展 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
上设置一个 minWidth
。 40dp
的值对我有用。现在光标会出现在视图中,即使是空的。
只需添加对我有用的解决方案:
我在 EditText
上设置 hint
属性。但是不能为空,所以我使用了空格。
以我为例android:hint=" "