对于这ActionBar我想很多人都想了解一下到底是怎么一个使用方法,以及它都存在哪些可操作的和使用的地方。
如下图所示:
<ignore_js_op> 
这便是ActionBar的基本内容。
获得ActionBar的方法很简单actionBar = this.getActionBar();
1.Home图标区域:这里的图标当然可以在清单文件中定义,也可以在代码中定义,但是在代码中定义需要请求设置的"资格",即需要添加以下代码
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId);
而如果想要对home图标进行点击时间处理,则需要在为这个icon“使能”:
actionBar.setDisplayHomeAsUpEnabled(true);
此home图标的id便是androi.R.id.home;
这个home点击事件的监听是在public boolean onMenuItemSelected(int featureId, MenuItem item)里面获取的,例如:

[Java] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(this, "home", 1).show();
break;
}
}

2.标题区域,相应的也有
actionBar.setDisplayShowTitleEnabled(true); 
当然我们也可以给标题栏设置自己的风格,但是那样也必须在setContentView(R.layout.custom_title);之前添加
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
然后就可以启用
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, resId);
resId便是自己想要的布局风格。
3.选项卡区域:这个区域,相信便是大家最想也是最近常使用的区域了,它同时有3中不同风格的类型:
ActionBar.NAVIGATION_MODE_TABS  ActionBar.NAVIGATION_MODE_LIST  ActionBar.NAVIGATION_MODE_STANDARD
ActionBar.NAVIGATION_MODE_STANDARD对于这个区域就不用多说了。
而对于前面两种如下图所示:ActionBar.NAVIGATION_MODE_TABS
当点第一个按钮时:
<ignore_js_op> 
代码的实现其实也很简单:

[Java] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
actionBar.setTitle("选项卡");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText("Tab1")
.setTabListener(MainActivity.this));
actionBar.addTab(actionBar.newTab().setText("Tab2")
.setTabListener(MainActivity.this));
actionBar.addTab(actionBar.newTab().setText("Tab3")
.setTabListener(MainActivity.this));

这里必须为tab添加tablistener事件,如果要操作tab切换事件只需要实现监听方法即可。
implements ActionBar.TabListener
当点击第二个按钮时:
<ignore_js_op> 
显示一个可以点击下拉的列表,代码如下

[Java] 纯文本查看 复制代码
1
2
3
4
5
6
7
String[] str = { "1", "2", "3", "4", "5" };
actionBar.setTitle("列表");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_spinner_item, str),
MainActivity.this);

同样的需要实现以下它的点击监听事件implements ActionBar.OnNavigationListener 实现接口的方法便可对列表项进行你想要的操作。
4.菜单区域:其实这个区域也就相当于菜单,只是它将menu放到ActionBar这里而已,事件的监听和布局跟操作menu是一样的。
    而如果你想要将menu放到ActionBar上,只需要将你需要填放的item添加一个android:showAsAction这样的属性
他同时提供给你几个可选的类型:ifRoom|withText 的意思上显示icon和字体 never是从不,always是总是。
如图所示: <ignore_js_op>

当点击item1这个图标区域时:出现一个:submenu。顾名思义 这个下拉的item就是从属于item1的submenu,如果你想要达到这样的效果,只需要在menu中添加一个submenu便可实现这个效果例如本实例的简单实现:

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_launcher"
android:orderInCategory="3"
android:showAsAction="ifRoom|withText"
android:title="item1">
<menu>
<item
android:id="@+id/save"
android:icon="@drawable/ic_launcher"
android:orderInCategory="4"
android:showAsAction="ifRoom|withText"
android:title="item2"/>
<item
android:id="@+id/item8"
android:icon="@drawable/ic_launcher"
android:orderInCategory="5"
android:showAsAction="ifRoom|withText"
android:title="item3"/>
<item
android:id="@+id/item9"
android:icon="@drawable/ic_launcher"
android:orderInCategory="6"
android:showAsAction="ifRoom|withText"
android:title="item4"/>
</menu>
</item>

这样就能达到如此效果。对于item的监听已经强调过,它就是menu的item,所以监听事件的处理在
public boolean onMenuItemSelected(int featureId, MenuItem item)
了解了这些,相信大家对这些区域对应的点击事件的处理都不是难事。
最后贴下源码,方便对照: <ignore_js_op> MyActionBar.rar (982.67 KB, 下载次数: 5126)

Android ActionBar使用方法的更多相关文章

  1. Android ActionBar

    ActionBar 在android3.0中就加入了,但是android3.0适用于平板电脑的,在手机不能使用.android 4.0之后也开始有AndroidBar.所以说要想使用androidBa ...

  2. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

  3. Android ActionBar通过Tab进行不同的Fragment之间的交换

    ActionBar的使用常见于4.0系统,其Tab的使用挺广泛的. 在ActionBar中添加标签(Tabs),每个标签对应的是一个Fragment,点击不同的Tab时,就会切换到对应的Fragmen ...

  4. Android ActionBar(转)

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用“返回/向上”程 ...

  5. Android ActionBar应用实战,高仿微信主界面的设计

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...

  6. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  7. Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  8. Android ActionBar全然解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc.我翻译之后又做了些加工 ...

  9. Android 原生 Android ActionBar

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...

随机推荐

  1. C# Matlab 相互调用

    转自禾木junjie原文C# Matlab 相互调用 测试环境 VisualStudio2013 / .net4.0 Matlab2015b 高版本的matlab对外接其它语言做得很方便了,并不需要一 ...

  2. c++builder自定义控件

    c++builder自定义控件 http://docwiki.embarcadero.com/CodeExamples/XE8/en/RegisterComponents_%28C%2B%2B%29 ...

  3. Windows下安装kibana

    1. 下载ElasticSearch https://www.elastic.co/downloads/kibana https://www.elastic.co/downloads/past-rel ...

  4. openSUSE Linux 忘记root密码的解决方法

    openSUSE Linux 忘记root密码的解决方法 : 对于大部分linux发行版本,忘记root密码的时候,是可以通过单用户模式来重设密码的. 如在redhat/fedora 下,可以通过在启 ...

  5. VS2017更新后 在WIN7上找不到 stdio.h等的问题

    项目->属性->配置属性->常规->windows SDK版本.将其换成你现在的版本即可解决问题,如果不行就重新下个最新版SDK,如WIN10的.

  6. 运动函数封装(js)

    // 运动函数 function starMove(obj,json,fnEnd){ clearInterval(obj.timer); obj.timer  = setInterval(functi ...

  7. pyinstaller打包后运行提示找不到模块

    截止到2017年9月20号,pyinstaller只支持到python3.5,如果需要支持到3.6,需要自己在github上下载pyinstaller的开发版. 在打包时候,并没有提示错误,可以顺利打 ...

  8. Scrapy Test

    (flappbird) luo@luo-ThinkPad-W540:~$ scrapy startproject myspider0315New Scrapy project 'myspider031 ...

  9. tomcat使用log4j管理日志

    1.JDK+tomcat环境  参考:http://www.cnblogs.com/zzzhfo/p/6444029.html 2.下载相关软件 log4j下载地址 http://www.apache ...

  10. 获取网页上的所有QQ号码,并生成exel报表

    需要的jar如下: package jsoup.zr.com.utils; /** * * @author LF * */ public class Constant { /** * 网站链接地址ַ ...