Android 实现ActionBar定制

农村四月闲人少,勤学苦攻把名扬。这篇文章主要讲述Android 实现ActionBar定制相关的知识,希望能为你提供帮助。
我们在使用android手机时,常常发现应用中的ActionBar和我们平时使用的ActionBar相差很大。简单的说就是,其它应用的ActionBar为什么那么绚丽,自己应用的ActionBar就那么挫呢?近期有时间就细致研究了一下关于ActionBar的相关问题。
首先我们来看一下之前所说的“高大上”的ActionBar的效果图:

Android 实现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(); } }


好了。详细的代码比較简单就不再阐述了,看一下效果图:
Android 实现ActionBar定制

文章图片


【Android 实现ActionBar定制】源代码下载地址




    推荐阅读