为什么 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)
我正在开发一个应用程序,让您(在其他机会中)创建小笔记。注释由标题和 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)