Android 系统程序中如何实现 ActionBar?
创始人
2025-05-31 10:04:47
0

ActionBar是一个显示在屏幕顶部的控件,它包括了在左边显示的应用的logo图标和右边操作菜单的可见项。

实现方法

在ActionBar上的图标叫做ActionButtons,可以把不重要的ActionButtons放在ActionOverflows。


在Activity中:

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);MenuItem shareItem = menu.findItem(R.id.action_share);return true;}

自定义ActionBar background:

  1. 在Theme.xml中新建自定义Style,使其继承已有的Action Bar Style(Theme.holo)
  2. 复写其actionBarStyle属性
  3. actionBarStyle属性值指向另一个被覆写了background属性的Style
  4. 指定该background的属性值

theme.xml:


设置ActionBar为Tab样式:

ActionBar actionBar = getActionBar(); //for <3.0 getSupportActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);for (int i = 0; i < 3; i++){Tab tab = actionBar.newTab();tab.setText("Tab" + i);tab.setTabListener(null);actionBar.addTab(tab);}

实现Tablistener回调方法:

  ActionBar.TabListener tabListener = new ActionBar.TabListener() {@Overridepublic void onTabSelected(Tab tab, FragmentTransaction ft) {Toast.makeText(MainActivity.this, "TabSelected" + tab.getPosition(), Toast.LENGTH_SHORT).show();}@Overridepublic void onTabUnselected(Tab tab, FragmentTransaction ft) {}@Overridepublic void onTabReselected(Tab tab, FragmentTransaction ft) {}};

启用Overlay模式:

ActionBar占用一定屏幕空间,可以使之自动隐藏,但是每次自动隐藏又会导致重新计算屏幕,可以设置其为Overlay模式以把ActionBar放在屏幕的上面而不是顶部。

首先需要创建自定义theme,并设置android.windowActionBarOverlay属性为true。

true

如果要预留一定空间,可以指定PaddingTop:

android:paddingTop="?android:attr/actionBarSize"

添加ActionProvider:

menu.xml:

   

在Activity代码中:(当前系统中能够发送图片的所有应用)

@Override
public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);MenuItem shareItem = menu.findItem(R.id.action_share);mShareActionProvider = (ShareActionProvider) shareItem.getActionProvider();mShareActionProvider.setShareIntent(getDefaultIntent());return true;
}private Intent getDefaultIntent() {Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("image/*");return intent;

您可能感兴趣的学习文章

Android进阶学习笔记:docs.qq.com/doc/DWHFqVHBMVEJPWUx
Android工程师面试题钢:docs.qq.com/doc/DWGZIRFh5VEtYWE1D
Android音视频入门到高阶学习笔记:docs.qq.com/doc/DWFFWZHNPTHZVdHFX
Android开源框架设计思想解读:docs.qq.com/doc/DWHlGYUdseVhsSUda
App性能优化详解:docs.qq.com/doc/DWGRIR1hVWkFoZWVK
Framework内核解析和源码讲解:docs.qq.com/doc/DWFdlc2JocEtNbEJ1

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...