2013-03-08 71 views
6

我有一个ListView正上方有一个SearchView的活动。该活动通过用户在SearchView中键入文本来工作,该文本随后用于过滤ListView的内容。SearchView和键盘

在4英寸手机(Nexus 4)上,当应用程序处于“肖像”方向并且用户开始在搜索视图中输入文本时,屏幕的下半部分占据键盘,文本直接输入SearchView widget。

但是,当手机处于“风景”方向时,整个屏幕被键盘和“文本框”占据,屏幕的其余部分丢失。 “放大镜图示”键盘上的按钮似乎没有采取行动。

见截图enter image description here

问题

是否可以在横向方向上直接在SearchView小部件中输入文本?

如果不是,我该如何让键盘上的按钮做些什么?

+0

*是否可以在横向方向上直接在SearchView小部件中输入文本* - 我不这么认为。 *我怎么让键盘上的按钮做点什么?* - 什么按钮?该怎么办? – Luksprog 2013-03-08 16:14:16

+0

“键盘上的”搜索“按钮和”放大镜“按钮似乎没有任何操作。” – 2013-03-08 16:18:54

+0

对不起,我完全错过了这句话。您是否确定在点击搜索或放大按钮时没有获得“onQueryTextSubmit”调用? – Luksprog 2013-03-08 16:37:20

回答

12

你需要设置你的imeOptions的搜索查看窗口小部件,例如在SearchableInfo XML:

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen" 

类似能通过如果不使用XML来配置你的搜索视图setImeOptions来实现。

0

您可以从Java代码中不喜欢它下面,在onCreateOptionsMenu(菜单菜单)方法:

searchView.setImeOptions(searchView.getImeOptions() | EditorInfo.IME_ACTION_SEARCH | EditorInfo.IME_FLAG_NO_EXTRACT_UI | EditorInfo.IME_FLAG_NO_FULLSCREEN); 
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) 

科特林:

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

你可以看看这个问题。我试过你的解决方案,但在我的情况下它不起作用。 https://stackoverflow.com/questions/46263084/android-search-tool-in-landscape-orientation – 2017-09-17 14:12:02