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



我的问题:我正在为用户使用AutoCompleteTextView选项列表,尽管使用android:imeOptions="actionDone"设置了活动xml,但键盘仍然提供返回选项,而不是向键盘显示"完成"选项。

我尝试过的:我搜索了一些帖子,但找不到一个有这个特定问题的帖子。因此,我尝试了从另一篇适用于EditText的帖子中发布的以下解决方案,这样我就可以将此"完成"操作应用于同一活动中的多个AutoCompleteTextViews(发布在此处(。

同样,问题是,尽管为actionDone设置了XMLAutoCompleteTextView,键盘仍显示返回箭头。

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 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;
}
}

以下内容最终解决了我的问题。在活动XML中添加并定义inputType后,会出现done按钮。因此,出现了用imeOptions定义的inputType需求,或者完成按钮将不会出现。这是来自以下链接的建议之一,但没有一个答案得到批准。

Done在android 中的自动完成文本视图中的软键盘中不起作用

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

最新更新