关闭

ActionBar自定义

201人阅读 评论(0) 收藏 举报
分类:

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

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


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

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.jony.actionbarccustom;  
  2.   
  3. import android.app.ActionBar;  
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.view.Menu;  
  7. import android.view.MenuItem;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Toast;  
  11.   
  12. public class MainActivity extends Activity {  
  13.   
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_main);  
  18.         //自定义ActionBar  
  19.         final ActionBar actionBar = getActionBar();  
  20.         actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);  
  21.         actionBar.setCustomView(R.layout.actionbar);//自定义ActionBar布局  
  22.         actionBar.getCustomView().setOnClickListener(new OnClickListener() {//监听事件  
  23.             @Override  
  24.             public void onClick(View arg0) {  
  25.                 switch (arg0.getId()) {  
  26.                 case R.id.back:  
  27.                     showToast(R.string.finish);  
  28.                     finish();  
  29.                     break;  
  30.                 default:  
  31.                     break;  
  32.                 }  
  33.             }  
  34.         });  
  35.     }  
  36.   
  37.     @Override  
  38.     public boolean onCreateOptionsMenu(Menu menu) {  
  39.         // Inflate the menu; this adds items to the action bar if it is present.  
  40.         getMenuInflater().inflate(R.menu.actionbar_menu, menu);  
  41.         //使用代码来动态控制MenuItem的显示状态 or XML定义MenuItem的显示状态   
  42. /*        MenuItem share = menu.findItem(R.id.share); 
  43.         MenuItem undo = menu.findItem(R.id.undo); 
  44.         MenuItem redo = menu.findItem(R.id.redo); 
  45.         MenuItem save = menu.findItem(R.id.save); 
  46.         share.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
  47.         undo.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
  48.         redo.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
  49.         save.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);*/  
  50.         return true;  
  51.     }  
  52.   
  53.     @Override  
  54.     public boolean onOptionsItemSelected(MenuItem item) {  
  55.         switch (item.getItemId()) {  
  56.         case R.id.undo:  
  57.             showToast(R.string.undo);  
  58.             break;  
  59.         case R.id.redo:  
  60.             showToast(R.string.redo);  
  61.             break;  
  62.         case R.id.save:  
  63.             showToast(R.string.save);  
  64.             break;  
  65.         case R.id.share:  
  66.             showToast(R.string.share);  
  67.             break;  
  68.         default:  
  69.             break;  
  70.         }  
  71.         return super.onOptionsItemSelected(item);  
  72.     }  
  73.   
  74.     private void showToast(int msg){  
  75.         Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();  
  76.     }  
  77. }  

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

0
1
查看评论

Android 实现ActionBar定制

Android开发 自定义ActionBar
  • weihan1314
  • weihan1314
  • 2014-06-18 17:57
  • 24988

Android自定义标题栏ActionBar

在日常的工作中,ActionBar使用的频率非常的高,而系统自带的ActionBar捆绑的东西有太多,而上面多数的效果我们都用不到。 如果不用系统的ActionBar,我们该怎样把自定义ActionBar的工作做到最简化呢。 首先我们做一个基本的需求分析。 如上图所示,我们的ActionBa...
  • yanjunhui2011
  • yanjunhui2011
  • 2017-03-21 20:17
  • 350

Android基础--ActionBar的基本用法,自定义View,标题栏

1、ActionBar的简介ActionBar位于Activity的顶部,可用来显示activity的标题、Icon、Actions和一些用于交互的View。它也可被用于应用的导航。ActionBar 是在Android 3.0(API 11)中加入到SDK中的,想在低版本中使用ActionBar有...
  • android_it
  • android_it
  • 2016-06-29 14:05
  • 1941

自定义ActionBar的两种方式(静态&动态)

说明Android 3.0及以上已经有了ActionBar的API,有了ActionBar的API之后可以随意自定义自己漂亮的ActionBar了基本知识了解1.Actionbar’s API1.1 setHomeButtonEnabled这个小于4.0版本的默认值为true的。但是在4.0及其以上...
  • u013922681
  • u013922681
  • 2015-07-31 17:33
  • 1118

ActionBar的使用,设置和自定义

前言ActionBar是我们google在3.0以后推出的推荐使用的标题栏,它灵活多变,非常好用,现在我们就来一起学习下吧。配置主题要想使用ActionBar,必须在主题里配置使用ActionBar的主题(可以在单个的Activity中配置,也可以在Application中配置),@style/Th...
  • xiangxiang07
  • xiangxiang07
  • 2016-04-06 18:13
  • 791

Android ActionBar学习(二) -- 自定义ActionBar Style

转载请注明出处:        上一篇文章我们初步了解了ActionBar的概念及为ActionBar自定义添加不同的Action item,Action View以及Action Provider等实现方法,接下来的这一片文章我们将讨论如何为Act...
  • yegongheng
  • yegongheng
  • 2014-08-18 13:33
  • 5600

自定义标题栏之ActionBar与“沉浸式”标题栏

标题栏对于用户导航能起到很重要的作用,也能提高用户体验,所以很多情况下,我们应用都会标题栏,但系统默认的标题栏很丑,我们应用开发一般都不会用系统默认的标题栏,都会自定义自己风格的标题栏。标题栏一般有两种形式:一是利用actionbar,一种是直接利用布局来实现(当然利用布局来实现需要用到辅助手段)。...
  • u012864297
  • u012864297
  • 2016-12-15 15:12
  • 694

actionbar默认两边有边距

true @style/ClubToolbar true 50dp true 0dp 0dp 修改app主题style
  • chenhuakang
  • chenhuakang
  • 2016-08-27 13:54
  • 1021

android:自定义actionbar样式和布局

1.首先,添加自定义的actionbar样式: 在style.xml中添加样式ActionBarStyle:                     #428bca     &#...
  • mr_orange_klj
  • mr_orange_klj
  • 2015-02-10 14:06
  • 1831

ActionBar最近学习整理之二:风格自定义

上一篇介绍了ActionBar的选项内容和菜单项,项目中会遇到需要自定义风格的标题栏,CustomView不建议用来定义控件风格,因为没有用到ActionBar的默认组件,如果UIDesigner完全自主设计了一套看起来怎么都不像谷歌建议的AB布局,可以考虑CustomView,大部分情况只是要修改...
  • klpchan
  • klpchan
  • 2013-08-18 19:56
  • 12900
    个人资料
    • 访问:18240次
    • 积分:405
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:12篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论