您的位置:首页 > 移动开发 > Android开发

Android(3.0,level 11)工具栏ActionBar——搜索栏

2014-03-20 15:16 423 查看
本文介绍ActionBar中的一个常用小功能,搜索框。效果图:



实现思路:

1、重写onCreateOptionsMenu;

2、创建MenuItem,将SearchView添加到MenuItem中;

3、给SearchView添加事件。

实现方式:

介绍两种添加搜索栏的方式:代码、XML。

具体操作代码如下MainActivity.java

/**
* 在ActionBar中添加SearchView
*
* @author 小孩子a
* */
public class ActionBar_Search extends Activity implements
SearchView.OnQueryTextListener {

/**
* 用于显示TextChange事件的结果
* */
private TextView mSearchResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.actionbar_search);
mSearchResult = (TextView) findViewById(R.id.ab_s_result);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// addMenuFromXML(menu);
addMenuFromCode(menu);
return super.onCreateOptionsMenu(menu);
}

/**
* 利用XML的方式,将SearchView引入
*
* @param R.memu.menu_ab_search
* */
private void addMenuFromXML(Menu menu) {
getMenuInflater().inflate(R.menu.menu_ab_search, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search)
.getActionView();
searchView.setOnQueryTextListener(this);
}

/**
* 利用代码的方式,将SearchView引入
* */
private void addMenuFromCode(Menu menu) {
MenuItem mSearch = menu.add("搜索");

SearchView searchView = new SearchView(getApplicationContext());
searchView.setOnQueryTextListener(this);

mSearch.setActionView(searchView);
mSearch.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

}

@Override
public boolean onQueryTextChange(String newText) {
mSearchResult.setText("input text is " + newText);
return true;
}

@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(getApplicationContext(), query, Toast.LENGTH_LONG)
.show();
return true;
}


其中资源文件menu_ab_search.xml的结构如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/menu_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_search"
android:showAsAction="ifRoom"
android:title="@string/ab_search"/>

</menu>


通过上述操作,即可实现工具栏中包含搜索框。

在下一篇博客中,我将为大家带来其他常用的一些功能,比如菜单的showAsAction属性不同,呈现的样子;二级菜单SubMenu,自定义MenuItem等。欢迎广大博友关注。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐