Android 实现ActionBar定制

我们在使用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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//自定义ActionBarfinal ActionBar actionBar = getActionBar();actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);actionBar.setCustomView(R.layout.actionbar);//自定义ActionBar布局actionBar.getCustomView().setOnClickListener(new OnClickListener() {//监听事件@Overridepublic void onClick(View arg0) {switch (arg0.getId()) {case R.id.back:showToast(R.string.finish);finish();break;default:break;}}});}@Overridepublic 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;}@Overridepublic 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();}}好了,,具体的代码比较简单就不再阐述了,看一下效果图:

源码下载地址

人要有梦想,有了梦想才会努力奋斗,

Android 实现ActionBar定制

相关文章:

你感兴趣的文章:

标签云: