如何让 "Done" 在 Android 的 AutoCompleteTextView 上显示和退出键盘?

How to get "Done" to show and exit keyboard on AutoCompleteTextiView in Android?

我的问题: 我正在为用户使用 AutoCompleteTextView 选项列表,尽管有 activity xml 设置 android:imeOptions="actionDone" 键盘仍然提供 return 选项,而不是使用 "Done" 选项显示键盘。

我尝试过的方法: 我搜索了一些 post,但找不到与此特定问题相关的问题。因此,我尝试了以下解决方案 posted 来自另一个适用于 EditText 的 post,因此我可以将此 "Done" 操作应用于多个同一 activity(posted here)内的 AutoCompleteTextViews。

同样,问题是尽管 XML AutoCompleteTextView 设置为 actionDone 键盘显示 return 箭头。

XML

 <AutoCompleteTextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:id="@+id/viewSource"
                    android:hint="@string/hint_source"
                    android:imeOptions="actionDone"
                    android:padding="5dp"
                    android:background="@color/colorWhite"
                    app:layout_constraintStart_toEndOf="@id/lblViewSource"
                    android:layout_marginStart="5dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    android:textSize="12sp"
                    android:layout_marginEnd="5dp"
                    app:layout_constraintBaseline_toBaselineOf="@+id/lblViewSource"/>

AutoCompleteTextView调用代码

sourceTitle.setOnEditorActionListener(new DoneOnEditorActionListener());

自定义Class管理代码"Done"和键盘关闭

class DoneOnEditorActionListener implements AutoCompleteTextView.OnEditorActionListener {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
            return true;
        }
        return false;
    }
}

以下最终解决了我的问题。一旦我在 activity XML 中添加并定义了 inputType,完成按钮就会出现。因此,似乎 inputType 需要用 imeOptions 定义,否则完成按钮将不会出现。这是以下 link 的建议之一,但 none 的答案已获批准。

Done is not working in softKeyboard in Autocomplete TextView in android

android:inputType="text"
android:imeOptions="actionDone"