本文介绍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;
}
<?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>
通过上述操作,即可实现工具栏中包含搜索框。