资源说明:Android顶部(toolbar)搜索框实现的实例详解
本文介绍两种SearchView的使用情况,一种是输入框和搜索结果不在一个activity中,另一种是在一个activity中。
首先编写toolbar的布局文件 toolbar中图标在menu文件下定义一个布局文件实现
示例代码:
<menu xmlns:android=http://schemas.android.com/apk/res/android
xmlns:app=http://schemas.android.com/apk/res-auto
xmlns:tools=http://schemas.and
在Android应用开发中,添加搜索功能是提升用户体验的重要一环。本实例主要讲解如何在Android顶部的ToolBar中集成搜索框,分为两种不同的实现方式:一种是搜索框与搜索结果展示在同一个Activity中,另一种则是分开在两个不同的Activity中处理。
我们需要在ToolBar的布局文件中设置SearchView。在menu文件下创建一个XML布局,如`toolbar_menu_friend.xml`,并在其中定义一个菜单项,指定`actionViewClass`为`android.support.v7.widget.SearchView`。例如:
```xml
```
`showAsAction="ifRoom"`表示如果空间足够,SearchView会直接显示在ToolBar上。`actionViewClass`指定了SearchView的类,用于显示搜索框。
接着,创建一个`searchable.xml`文件,定义搜索框的属性,如提示文字和输入法选项。例如:
```xml
```
`imeOptions="actionSearch"`使得输入法的返回键变为搜索按钮。
在主Activity中,我们需要重写`onCreateOptionsMenu()`方法来加载菜单,并获取SearchView实例,设置其`searchableInfo`。例如:
```java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu_friend, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.ab_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
```
如果搜索框与搜索结果在同一Activity中,你可以在`onQueryTextSubmit()`或`onQueryTextChange()`方法中处理搜索请求。如果搜索结果在另一个Activity中展示,那么你需要创建一个新的Activity(如`SearchResultActivity`)来接收和处理搜索结果。
在`AndroidManifest.xml`中,为`MainActivity`添加元数据来指定默认的搜索活动,同时为`SearchResultActivity`添加配置,例如:
```xml
```
在`SearchResultActivity`中,你可以通过`Intent`的额外数据来获取搜索关键字,如`getStringExtra(SearchManager.QUERY)`。
总结起来,Android中在ToolBar中实现搜索功能涉及以下几个步骤:
1. 在menu文件中定义SearchView。
2. 创建`searchable.xml`文件设置搜索框属性。
3. 在主Activity中设置SearchView并监听搜索事件。
4. 可选择性地创建一个新Activity来处理搜索结果。
5. 在`AndroidManifest.xml`中配置搜索活动。
了解这些步骤后,你就能在自己的应用中实现一个功能完善的搜索框了。这不仅能提高用户交互性,也能使应用功能更加完善。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。