码迷,mamicode.com
首页 > 移动开发 > 详细

Android ActionBar使用

时间:2016-07-20 10:35:27      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!