如何让 "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"
我的问题: 我正在为用户使用 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"