为什么 Android 带有 android:imeOptions="actionNext" 的多行 EditText 在 Google Keep 中工作?

Why does Android multiline EditText with android:imeOptions="actionNext" work in Google Keep?

我正在开发一个应用程序,让您(在其他机会中)创建小笔记。注释由标题和 body 组成。完美的行为是在键盘上使用带有 imeOption“actionNext”的多行标题,以便在完成标题输入后移动到注释内容。

官方Google文档说,如果你使用多行EditText,软输入法的操作按钮将永远是一个回车return(https://developer.android.com/training/keyboard-input/style#Action)。

但是!如果 you'll look at the Google Keep app,您会看到他们的笔记完全实现了我需要的行为。 这里的秘密是什么?我们如何在我们的应用程序中实现这种行为?

您可以在 XML 和运行时 setRawInputType 中将 imeOptions=actionNext 设置为 TYPE_TEXT_FLAG_MULTI_LINE。这样你就可以实现这种行为。

根据文档 setRawInputType 用于:

Directly change the content type integer of the text view, without modifying any other state.

示例:

XML:

 <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="actionNext"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Activity#onCreate:

binding.editText.setRawInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
                or InputType.TYPE_TEXT_FLAG_MULTI_LINE)