我们在使用Android手机时,经常发现应用中的ActionBar和我们平时使用的ActionBar相差非常大。简单的说就是,其他应用的ActionBar为什么那么绚丽,自己应用的ActionBar就那么挫呢?最近有时间就仔细研究了一下关于ActionBar的相关问题。

首先我们来看一下之前所说的“高大上”的ActionBar的效果图:


查阅了Android文档以及ActionBar的实现源码,发现ActionBar是可以定制的(PS:Google还是想的非常周到,不愧为大神级别的程序员),看到这儿大家对ActionBar的神秘面纱已经揭晓了吧,接下来我们就来看看具体的怎么实现的。

package com.jony.actionbarccustom;import android.app.ActionBar;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Toast;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //自定义ActionBar        final ActionBar actionBar = getActionBar();        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);        actionBar.setCustomView(R.layout.actionbar);//自定义ActionBar布局        actionBar.getCustomView().setOnClickListener(new OnClickListener() {//监听事件            @Override            public void onClick(View arg0) {                switch (arg0.getId()) {                case R.id.back:                    showToast(R.string.finish);                    finish();                    break;                default:                    break;                }            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.actionbar_menu, menu);        //使用代码来动态控制MenuItem的显示状态 or XML定义MenuItem的显示状态 /*        MenuItem share = menu.findItem(R.id.share);        MenuItem undo = menu.findItem(R.id.undo);        MenuItem redo = menu.findItem(R.id.redo);        MenuItem save = menu.findItem(R.id.save);        share.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);        undo.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);        redo.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);        save.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);*/        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {        case R.id.undo:            showToast(R.string.undo);            break;        case R.id.redo:            showToast(R.string.redo);            break;        case R.id.save:            showToast(R.string.save);            break;        case R.id.share:            showToast(R.string.share);            break;        default:            break;        }        return super.onOptionsItemSelected(item);    }    private void showToast(int msg){        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();    }}

好了,具体的代码比较简单就不再阐述了,看一下效果图:


源码下载地址

更多相关文章

  1. 实现android手机来电拦截系统页面弹出自定义页面特效
  2. Android(安卓)开发资料总结--网络请求框架
  3. Android的Activity生命周期模拟程序及解析
  4. 深入Android【二】—— 架构和学习
  5. Android中getWidth()和getMeasureWidth()的区别探究
  6. Android架构师:Android零基础进阶到高级架构师
  7. Android(安卓)FrameWork——StatusBar
  8. Android(安卓)Doze模式分析
  9. 手把手教你Android来去电通话自动录音的方法

随机推荐

  1. Android读取手机通讯录实现
  2. Android应用程序的自动更新升级(自身升级
  3. Android(安卓)SDK Document 框架导读的翻
  4. Android:Camera2开发详解(上):实现预览、
  5. 在任意位置获取应用程序Context
  6. Android直播推流学习
  7. Windows环境下Android(安卓)NDK环境搭建
  8. android中layout_gravity和gravity的区别
  9. Android(安卓)Studio代码调试大全
  10. 还在用枚举?我早就抛弃了!(Android(安卓)注