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

本文介绍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等。欢迎广大博友关注。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值