Android 实现ActionBar定制
来源:互联网 发布:小米线刷软件 编辑:程序博客网 时间:2024/06/04 22:41
我们在使用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(); }}
好了,具体的代码比较简单就不再阐述了,看一下效果图:
源码下载地址
13 3
- Android 实现ActionBar定制
- 定制ActionBar
- Android ActionBar 实现原理
- Android 导航栏ActionBar和状态栏StautsBar的定制
- Android实现定制桌面
- ActionBar/Toolbar定制ui
- Android ActionBar详解(三):ActionBar实现切换Tabs标签
- Android ActionBar详解(三):ActionBar实现切换Tabs标签
- Android定制实现上网限制
- Android ActionBar+ViewPager 实现左右滑动Tab
- Android实现颜色不断编号的Actionbar
- Android入门之ActionBar实现Tab导航
- Android ActionBar+ViewPager 实现左右滑动Tab
- Android实现Actionbar红点数字提示
- Android UI之Tab(ActionBar+Fragment实现)
- Android 实现Google-Inbox ActionBar开关效果
- Android--(12)--Fragment+ActionBar实现页面导航
- Android--ActionBar
- Qt:TreeModel+QTreeView中使用图标
- 对象初始化过程
- PAT10191019. 数字黑洞 (20)
- javascript中的var定义的变量和没有var定义变量的区别
- IOError: [Errno 2] 错误
- Android 实现ActionBar定制
- 时隔两年 耐克终于发布Android版FuelBand应用
- Java 10个调试技巧
- flex4 的常用验证控件
- [总结]使用ssh架构服务器uri中的中文乱码解决
- android 解决内存溢出 out of memory 增大内存空间
- 网页切换效果
- 整理android调用系统相机的方法及遇到的问题
- EventBus介绍