Actionbar中searchview

actionbar中搜索是很常见的功能,而在actionbar中实现搜索也比较简单,只需要在配置文件中加入android:actionViewClass="android.widget.SearchView"

这里引入了一个action View的概念,ActionView是一种可以在ActionBar中替换Action按钮的控件,它可以允许用户在不切换界面的情况下通过ActionBar完成一些较为丰富的操作。我们就可以用SearchView来实现搜索功能。如:

<item
       android:id="@+id/search"
       android:icon="@drawable/ic_action_search" 
       android:actionViewClass="android.widget.SearchView"
       android:showAsAction="ifRoom|collapseActionView"
       android:title="@string/search"/>


这里需要注意一下android:showAsAction="ifRoom|collapseActionView"collapseActionView代表该控件可以合并成一个action按钮。

当定义好SearchView后我们就可以在代码里使用SearchView

 

public boolean onCreateOptionsMenu(Menu menu) {
         //Inflate the menu; this adds items to the action bar if it is present.
         getMenuInflater().inflate(R.menu.main,menu);
         MenuItem searchItem = menu.findItem(R.id.search);
         SearchViewsearch = (SearchView) <span style="font-family: Arial, Helvetica, sans-serif;">searchItem </span>.getActionView();
         return super.onCreateOptionsMenu(menu);
     }


onCreateOptionsMenu方法中我们可以获取到SearchView的引用,我们可以调用setOnQueryTextListener方法来获取Searchview的值,该方法需要传入一个参数,参数类型为android.widget.SearchView.OnQueryTextListener,这个接口里边有两个方法boolean onQueryTextSubmit(String query);   boolean onQueryTextChange(String newText);其中第一个方法是用户在SearchView中输入完成点击提交后回调的,第二个方法是主要SearchView的内容发生变化时回调的,所以大家可以根据自身业务的需求来实现。

search.setOnQueryTextListener(newOnQueryTextListener() {
             
              @Override
              publicboolean onQueryTextSubmit(String query) {
                   //TODO Auto-generated method stub
                   Toast.makeText(getApplicationContext(),"onQueryTextSubmit", Toast.LENGTH_SHORT).show();
                   returnfalse;
              }
             
              @Override
              publicboolean onQueryTextChange(String newText) {
                   //TODO Auto-generated method stub
                   Toast.makeText(getApplicationContext(),"onQueryTextChange", Toast.LENGTH_SHORT).show();
                   returnfalse;
              }
         });

大家是否还记得collapseActionbar,这个属性可以把action view合并成一个action按钮,当SearchView展开或者合并的时候可能会加载不同的界面,可以注册一个监听器:

searchItem.setOnActionExpandListener(new OnActionExpandListener() {
			
			@Override
			public boolean onMenuItemActionExpand(MenuItem item) {
				// TODO Auto-generated method stub
				Toast.makeText(getApplicationContext(), "onMenuItemActionExpand", Toast.LENGTH_SHORT).show();
				return true;
			}
			
			@Override
			public boolean onMenuItemActionCollapse(MenuItem item) {
				// TODO Auto-generated method stub
				Toast.makeText(getApplicationContext(), "onMenuItemActionCollapse", Toast.LENGTH_SHORT).show();
				return true;
			}
		});
在SearchView展开的时候会调用onMenuItemActionExpand方法,在合并的时候会调用onMenuItemActionCollapse方法,所以大家可以根据自身的业务需求来具体实现。
对于SearchView就先简单的介绍到这里

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值