在Android 3.0 或更高版本中,可以使用 SearchView
widget.如果你开发的程序是基于Anroid3.0且计划使用search widget, 那么我们建议把search widget 作为一个an action view in the Action Bar来使用, 而不是使用search dialog (也不要把search widget 放在你的activity layout中). 比如, 图二 就是把search widget 当做Action Bar来使用的一个界面.
search widget提供了和search dialog一样的功能. 当用户执行搜索的时候,它会启动合适的activity来进行处理,它也提供搜索关键词建议和语言搜索.
注意: 当你把search widget作为action view来使用时, 你可能有时仍然需要使用search dialog, 比如有时search widg在Action Bar中也不太合适. 具体的请参照下面的”同时使用search widget和search dialog“
图二:
首先你应该向前面讲的search dialog一样,先创建好searchable配置和searchable activity,然后为每个SearchView设置好搜索助手。你可以通过setSearchableInfo()来设置你的SearchableInfo
对象,SearchableInfo它代表的是你的searchable配置。
你可以同过SearchManager
的 getSearchableInfo()
来得到 一个SearchableInfo的引用。
比如, 如果你想在Action Bar中把SearchView
作为一个action view来使用,那么在 回调数onCreateOptionsMenu()
中就应该enable the widget 实例10:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the options menu from XML
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager)getSystemService
(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()
));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default、
return true;
}
这样就完了,search widget现在已经被配置好了,系统也能够把搜索命令发送到你的searchable activity. 你也可以在 search widget中使用search suggestions。
注意: 如果你想自己处理所有用户的输入,请在它的回调函数和事件监听接口方法中处理。关于SearchView 和其监听接口,更多的内容可以参照SearchView的文档。
关于Action Bar中action views的更多内容,请参照Using the Action Bar (里面有把search widget作为action view来进行添加的实例代码)
十一、search widget的其他特性
可以向SearchView 添加一些其他的特性A、提交按钮(A submit button) 默认情况下是没提交搜索的按钮,所以用户必须在键盘上按下"Return"键来提交搜索.你可以同过setSubmitButtonEnabled(true)来添加一个提交按钮("submit" button) 注:这里 的 "Return"键应该就是”Enter“ 键 B、自定义search suggestions 当你使用search suggestions的时候, 你经常希望用户仅仅是简单选择suggestion, 但是他们也可能想自定义suggested search query. 你可以通过调用setQueryRefinementEnabled(true),来为每个suggestion添加一个按钮,让用户在search box中输入用户自定义的suggestion C、让 search box 可以见 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜), 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
在
SearchView
中还有其他的一些API允许你个性化search widget的显示.然而他们大多数是在你自己处理用户输入而不Android system处理输入和显示search suggestions时使用
十二、同时使用search widget和search dialog 如果你把 search widget作为 action view而插入到 Action Bar中, 那么你可以让它只在有足够空间时才以 Action Bar的形式出现(通过设置android:showAsAction="ifRoom"), 这时search widget就可能不以 action view的形式出现, 而是是以菜单的形式出现在overflow menu里. 比如你的程序运行在一个小屏幕的手机上,在 Action Bar中 就没有足够的空间把 search widget和其他的 action items or navigation elements显示下。这时它们将以菜单项的形式出现在 overflow menu中. 当在overflow menu中显示的时候,该项像普通的菜单项一样 and 它不再显示 action view (the search widget). 为了处理该情况,当用户选择了和 search widget关联的 menu item时,你必须激活search dialog。为了处理此事情, 你必须在onOptionsItemSelected() h处理该"Search" menu item并通过调用 onSearchRequested()来开启 search dialog。
关于 Action Bar如何工作和处理此中情况的更多信息请参照文档 Using the Action Bar。 也可以参照 search dialog 和search widget的实例 Searchable Dictionary
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow