SearchView 和键盘

6
我有一个活动,其中SearchView直接位于ListView上方。用户在SearchView中输入文本,然后用该文本过滤ListView的内容。
在4英寸手机(Nexus 4)上,当应用程序处于“纵向”方向并且用户开始在搜索视图中输入文本时,屏幕的下半部分占用键盘,并且文本直接在SearchView小部件中输入。
但是,当手机处于“横向”方向时,整个屏幕都被键盘和“文本字段”占据,其余部分屏幕丢失。“搜索”按钮和键盘上的“放大镜”按钮似乎没有任何作用。
请参见屏幕截图enter image description here 问题
在横向方向时,是否可能直接在SearchView小部件中输入文本?
如果不行,如何使键盘上的按钮起作用?

在横屏方向下,是否可以直接在SearchView小部件中输入文本?我认为不行。如何让键盘上的按钮执行某些操作?哪些按钮?要做什么? - user
键盘上的“搜索”按钮和“放大镜”按钮似乎没有任何作用。 - BENBUN Coder
抱歉,我完全错过了那句话。您确定在单击搜索或放大镜按钮时没有收到“onQueryTextSubmit”调用吗? - user
3个回答

14

你需要为SearchView小部件设置imeOptions,例如在SearchableInfo xml中:

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen"

如果您没有使用XML来配置搜索视图,也可以通过 setImeOptions 实现类似的效果。


2

将 imeOptions 设置为 android.support.v7.widget.SearchView 不起作用:您需要在其中的 EditText 中设置:

Java:

EditText searchInput = searchview.findViewById(android.support.v7.appcompat.R.id.search_src_text)
searchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH)

Kotlin:

val searchInput = searchview.findViewById<EditText>(android.support.v7.appcompat.R.id.search_src_text)
searchInput.imeOptions = EditorInfo.IME_ACTION_SEARCH

你能否看一下这个问题?我尝试了你的解决方案,但在我的情况下它没有起作用。 https://stackoverflow.com/questions/46263084/android-search-tool-in-landscape-orientation - Abu Qatada
在android.support.v7.widget.SearchView中像CCRoss的答案一样在xml中使用imeOptions对我来说完全有效。 - Josh

0

您可以在Java代码中像以下这样完成,在onCreateOptionsMenu(Menu menu)方法中:

searchView.setImeOptions(searchView.getImeOptions() | EditorInfo.IME_ACTION_SEARCH | EditorInfo.IME_FLAG_NO_EXTRACT_UI | EditorInfo.IME_FLAG_NO_FULLSCREEN);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接