android之ActionBar的使用,ActionBar提供了顶部菜单。一般新建一个Activity会自动在menu文件夹下生成一个menu的xml文件,我们可以通过编辑该文件设置菜单。例如:(menu.xml)
_ueditor_page_break_tag_
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/> <item android:id="@+id/item1" android:orderInCategory="1" android:showAsAction="never" android:title="save"/> <item android:id="@+id/item_search" android:actionViewClass="android.widget.SearchView" android:orderInCategory="2" android:showAsAction="ifRoom|withText" android:title="edit"/> <item android:id="@+id/item1" android:orderInCategory="3" android:showAsAction="never" android:title="about"/> <item android:id="@+id/item1" android:orderInCategory="4" android:showAsAction="never" android:title="help"/> </menu>
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu, menu); return true; }
还可以在后台直接添加:
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuItem add = menu.add(0, 1, 0, "Save"); MenuItem open = menu.add(0, 2, 1, "Open"); MenuItem close = menu.add(0, 3, 2, "Close"); add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); open.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); close.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); return true; }
主菜单项属性是android:showAsAction。
这个属性可接受的值有:
1、always:这个值会使菜单项一直显示在Action Bar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
3、never:这个值使菜单项永远都不出现在Action Bar上。
4、withText:这个值使菜单项和它的图标,菜单文本一起显示。
ActionBar的显示与隐藏:
Button showBt = (Button) findViewById(R.id.showBt); showBt.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") public void onClick(View view) { ActionBar actionBar = getActionBar(); actionBar.show(); } }); Button hideBt = (Button) findViewById(R.id.hideBt); hideBt.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") public void onClick(View view) { ActionBar actionBar = getActionBar(); actionBar.hide(); } });
设置一个为搜索:android:actionViewClass="android.widget.SearchView"
为搜索绑定事件:
SearchView searchView = (SearchView) menu.findItem(R.id.item_search).getActionView(); searchView.setOnQueryTextListener(new OnQueryTextListener() { @Override public boolean onQueryTextChange(String newText) { return false; } @Override public boolean onQueryTextSubmit(String query) { // TODO Auto-generated method stub alertInfo(query); return false; } });
private void alertInfo(String QueryInfo) { Toast.makeText(this, "Searching for: " + QueryInfo + "...", Toast.LENGTH_SHORT).show(); // Dialog alertDialog = new AlertDialog.Builder(this). // setTitle("对话框的标题"). // setMessage("对话框的内容"). // setIcon(R.drawable.ic_launcher). // create(); // alertDialog.show(); }