android 方向改变时 edittext 不显示自定义光标

android edittext does not show custom cursor when orientation change

我有一个标准的 EditText,如下所示:

<EditText
    android:id="@+id/message_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textMultiLine"
    android:gravity="top|start"
    android:background="@null"
    android:textCursorDrawable="@drawable/mycursor"
    android:minLines="3"/>

这很好。它显示在屏幕上并且效果很好,但是一旦我将方向从纵向更改为横向,editText 就会更改为略有不同的 UI,右侧有一个 "Done" 按钮。这仍然很好,但问题是它返回到显示默认光标而不是 mycursor。

知道如何解决这个问题,以便无论方向如何,我的光标都会显示吗?

带有完成按钮的版本是提取视图。它实际上不是由您的应用程序绘制的,而是由键盘本身绘制的。由于它是由另一个应用程序绘制的,因此 UI 中的任何特殊内容都不会被接受,例如光标,因为键盘应用程序不知道它们。您可以设置 imeOption flagNoExtractUi 来尝试防止这种情况发生,但这可能会导致小型手机上的体验不佳,因为键盘上方的屏幕上只能容纳一小部分应用程序。