获得方式两种:
①在扩展包V7中有,这种方式能兼容其它的任何版本,即继承ActionBarActivity
②ActionBar actionBar = getActionBar()该方法获取的系统自带的,比较局限,只能用于3.0之后的版本中。
方法:1、actionBar.hide()隐藏
2、actionBar.show()
3、actionBar.setDisplayHomeAsUpEnabled(true);//显示一个可点击的小图标
注:该按钮系统中的id为android.R.id.home
4、ActionBar上的所有图标都可以认为是菜单,在onOptionsItemSelected(MenuItem item)添加事件,可以认为是菜单的替代
怎么在ActionBar上添加菜单和子菜单
①getMenuInflater().inflate(R.menu.main, menu);在res下的menu文件夹中的main中添加如图:
注意:item必须要有android:title属性。
android:showAsAction属性:
never永远显示在overflow中,
ifroom能显示的显示,其他显示在overflow中 ,
always总是显示在actionbar上,放不下也不会出现overflow
orderInCategory属性是排序
overflow就是ActionBar最右边的三个竖点,点击将产生下拉框
overflow总是显示文字,不显示图标;而ActionBar上只显示图标不显示文字。
②可以利用
onCreateOptionsMenu(Menu menu)方法的参数直接添加
menu.Add(),具体如图
第一个参数是分组,第二个参数是唯一标识,利用标识可以设置监听,第四个是标题
怎么给菜单项添加点击事件?
在该方法中设置onOptionsItemSelected(MenuItem item),参数item中含有id可以通过getItemId()获得
具体如图:
同理:在ActionBar可以添加控件:
具体方法:android:actionViewClass="android.widget.SearchView"指定参数为控件的全路径名
添加后可以利用方法下面方法获取findItem.getActionView();
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
//获得菜单按钮
MenuItemfindItem = menu.findItem(R.id.ser);
//获取菜单控件
SearchViewsea = (SearchView) findItem.getActionView();
sea.setOnQueryTextListener(newOnQueryTextListener() {
@Override
publicboolean onQueryTextSubmit(String query) {
//提交
Toast.makeText(MainActivity.this,query, Toast.LENGTH_SHORT).show();
returnfalse;
}
@Override
publicboolean onQueryTextChange(String newText) {
Toast.makeText(MainActivity.this,newText, Toast.LENGTH_SHORT).show();
returnfalse;
}
});
Menu菜单分类
选项菜单onCreateOptionsMenu(Menu menu)在该方法中添加,事件在onOptionsItemSelected(MenuItem item)方法中添加
上下文菜单onCreateContextMenu(ContextMenu menu,View v, ContextMenuInfo menuInfo)方法中添加
事件在onContextItemSelected(MenuItem item)方法中添加。
其他和actionBar中一样
registerForContextMenu(btn)方法给某个按钮绑定菜单
弹出菜单Popmenu
PopupMenu pop= newPopupMenu(MainActivity.this, view);创建弹出菜单,并绑定给view
show()该方法让菜单显示出来
同理可以通过两种方法添加子菜单
setOnMenuItemClickListener为菜单项设置监听
setOnDismissListener监听解散