博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 实现ActionBar定制
阅读量:6908 次
发布时间:2019-06-27

本文共 3238 字,大约阅读时间需要 10 分钟。

我们在使用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(); } }

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

你可能感兴趣的文章
随机不重复
查看>>
Server-Sent Events
查看>>
nio服务器端
查看>>
varnish 4.0 官方文档翻译15- VCL objects/actions
查看>>
CentOS 7 巨大变动之 firewalld 取代 iptables
查看>>
Android 在App和Java Web开发中的使用J2V8
查看>>
Ubuntu下打包解压命令
查看>>
shell中单引号、双引号、反引号的使用
查看>>
VIM使用系列:基本和常用的命令列表
查看>>
事件冒泡与捕获详解
查看>>
art-template4.0使用
查看>>
jsp中使用EL获得contextPath
查看>>
SOFARPC 5.5.X 新版发布 | 集成 Nacos 与 Hystrix
查看>>
java String compareTo
查看>>
详解openstack命令启动实现流程及原理(nova --debug image-list)
查看>>
Java-NIO-Buffer详解
查看>>
elasticsearch elk最全java api 搜索 聚合、嵌套查询
查看>>
关于spring中使用多个quatz配置文件配置计划任务时,只有其中一个文件的任务有效的问题...
查看>>
锁屏时禁止让activity自动onCreate和onDestroy
查看>>
大数据日志收集框架之Flume入门
查看>>