标签:
1.隐藏ActionBar
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
2.隐藏ActionBar的Title
actionBar.setDisplayShowTitleEnabled(false);
3.为ActionBar设置返回箭头
actionBar.setDisplayHomeAsUpEnabled(true);
4.为ActionBar加载menu布局,在onCreateOptionsMenu()函数中,需要重写这个方法
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_activity,menu);//加载你自己的布局文件,在res/menu文件夹下
5.编写ActionBar的布局
icon是设置item的图标,title是设置item的文本标题,之前是android:showAsAction,现在需要引入一个新的命名空间xmlns:app="http://schemas.android.com/apk/res-auto"
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item
android:id="@+id/menu_next"
android:icon="@drawable/ic_action_next"
android:title="@string/menu_next"
app:showAsAction="always|withText"/>
<item
android:id="@+id/menu_person"
android:icon="@drawable/ic_action_person"
android:title="@string/menu_person"
app:showAsAction="always|withText"/>
<item
android:id="@+id/menu_replay"
android:icon="@drawable/ic_action_replay"
android:title="@string/menu_replay"
app:showAsAction="never"/>
</menu>
6.为item编写响应事件,重写onOptionsItemSelected()方法
需要注意的是,ActionBar的返回箭头的id为android.R.id.home,如果想响应ActionBar的返回箭头的操作,需要自己去实现
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.menu_next:
Toast.makeText(MainActivity.this,"menu_next",Toast.LENGTH_SHORT).show();
break;
case R.id.menu_person:
Toast.makeText(MainActivity.this,"menu_person",Toast.LENGTH_SHORT).show();
break;
case android.R.id.home:
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
7.关于item不现实文本的问题,手机在竖屏状态下好像是不显示的,切换到横屏就可以显示了
8.关于在overflow只显示文本,不显示图标的问题
需要重写一个函数,通过反射的方式去完成这个需求
//在overflow中显示图标
@Override
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "onMenuOpened...unable to set icons for overflow menu", e);
}
}
}
return super.onPrepareOptionsPanel(view, menu);
}
Android ActionBar使用
标签:
原文地址:http://www.cnblogs.com/hanqi/p/5687244.html