6

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

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

但是,当手机处于“横向”方向时,整个屏幕被键盘和一个“文本字段”占据,而屏幕的其余部分都丢失了。键盘上的“搜索”按钮和“放大镜”按钮似乎没有任何动作。

查看屏幕截图在此处输入图像描述

问题

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

如果没有,我该如何让键盘上的按钮做一些事情?

4

3 回答 3

14

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

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen"

如果您不使用 xml 来配置搜索视图,则可以通过 setImeOptions 实现类似的操作。

于 2013-05-27T07:18:32.940 回答
2

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

爪哇:

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
于 2017-09-11T13:06:55.433 回答
0

您可以在 onCreateOptionsMenu(Menu menu) 方法中从 Java 代码中执行此操作:

searchView.setImeOptions(searchView.getImeOptions() | EditorInfo.IME_ACTION_SEARCH | EditorInfo.IME_FLAG_NO_EXTRACT_UI | EditorInfo.IME_FLAG_NO_FULLSCREEN);
于 2013-11-21T00:52:04.937 回答