ActionBar
在Android 3.0中,ActionBar取代传统的TitleBar和Menu,在程序中一直在顶部显示。
ActionBar的主要功能如下图:
介绍如下所示:
1、ActionBar的图标,可以修改。当应用不在最高级页面时,会显示一个箭头用作向上导航。
2、如果应用需要在不同的View中显示数据,可以用来切换视图。显示一个下拉菜单或Tab选项卡。
3、两个Action按钮,这里可以放置重要的按钮功能,为用户进行某项操作提供直接访问。
4、OverFlow按钮,放不下的按钮则会被放置于"更多..."的菜单中,以下拉形式展现。
ActionBar使用
1、添加ActionBar
ActionBar的添加非常简单,只需要在AndroidManifest.xml中指定Application或Activity的Theme为Theme.Holo的子类即可,在Android 3.0之后的Activity都默认包含有ActionBar组件。
2、取消ActionBar
如果需要隐藏Action Bar可以在你的Activity的属性中设置主题风格为NoTitleBar在你的manifest文件中
<activity android:theme="@android:style/Theme.NoTitleBar">
还有一种做法,在运行时调用hide()方法也可以隐藏ActionBar,调用show()方法来显示ActionBar()。
ActionBar actionBar = getActionBar();
actionBar.hide();
当你隐藏ActionBar时,系统会将Activity的整个内容充满整个空间。
3、修改ActionBar
默认情况下,系统会使用<application>或者<activity>中icon属性指定的图片来作为ActionBar的图标,但是我们也可以改变这一默认行为。如果我们想要使用另外一张图片来作为ActionBar的图标,可以在<application>或者<activity>中通过logo属性来进行指定,而标题中的内容使用label属性来指定。
<activity
android:name=".MainActivity"
android:label="修改的标题"
android:logo="@drawable/cnblog_icon" >
4、添加ActionBar按钮
ActionBar还可以根据应用程序当前的功能来提供与其相关的Action按钮,这些按钮都会以图标或文字的形式直接显示在ActionBar上。当按钮过多的情况下可以隐藏在OverFlow
里面。
当Activity启动的时候,系统会调用Activity的onCreateOptionsMenu()
方法来取出所有的Action按钮,我们只需要在这个方法中去加载一个menu资源,并把所有的Action按钮都定义在资源文件里面即可。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/user_p"
android:icon="@drawable/icon_user_p"
android:showAsAction="always"
android:title="用户"/>
<item
android:id="@+id/write_p"
android:icon="@drawable/icon_write_p"
android:showAsAction="always"
android:title="发布"/>
<item
android:id="@+id/favo_p"
android:icon="@drawable/icon_favo_p"
android:showAsAction="never"
android:title="收藏"/>
</menu>
通过两个<item>标签定义了三个Action按钮。<item>标签中又有一些属性:
id是该Action按钮的唯一标识符
icon用于指定该按钮的图标
title用于指定该按钮可能显示的文字
actionViewClass用来指定一个构建视窗所使用的布局资源
showAsAction则指定了该按钮显示的位置
其中showAsAction包含以下几种值可以选择:
标题 | 描述 |
---|---|
Room | 会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。当然个数并不仅仅局限于4个,依据屏幕的宽窄而定。 |
never | 永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义item的时候,最好把标题都带上。 |
always | 无论是否溢出,总会显示。 |
withText | withText值示意Action bar要显示文本标题。Action bar会尽可能的显示这个标题,但是,如果图标有效并且受到Action bar空间的限制,文本标题有可 能显示不全。 |
collapseActionView | 声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。 一般要配合ifRoom一起使用才会有效果。 |
接着,重写Activity的onCreateOptionsMenu()方法,代码如下所示:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}