操作栏是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式。在大多数的需要突出展现用户操作或全局导航的Activity中,你应该使用操作栏,因为操作栏能够跨应用程序给用户提供一致的界面,并且系统能够很好根据不同的屏幕配置来适应操作栏的外观。你能够用ActionBar的对象的API来控制操作栏的行为和可见性,这些API被添加在Android3.0(API
级别 11)中。
操作栏的主要目的是:
1.为了标识应用程序的商标和用户的位置而提供的一个专用空间。
这个空间的左边是应用的图标或logo,以及Activity的标题。但是,如果是像当前选择的标签这样的标识当前View对象的导航标签,你可以选择删除Activity的标题。
2.在不同的应用程序之间提供一致的导航和视觉体验。
操作栏提供了用于Fragment间切换的内置导航标签。它还提供了一个用于替换导航模式或优化当前视觉效果(如按照不同条件排序的列表)的下拉列表。
3.突出Activity的关键操作(如“搜索”、“创建”、“共享”,等),并且在可预见的方法内给用户提供快捷的访问。
对于关键的用户操作,你能够通过把选项菜单项作为操作项直接放到操作栏中,从而提供快捷的访问。操作项目还能提供一个操作窗口,这个窗口给更直接的操作行为提供一个嵌入的窗口部件。没有改进成操作项的菜单项在溢出菜单中还是有效的,用户既可以使用设备上的菜单按钮(设备上有按钮的时候),也可以使用操作栏中的溢出菜单按钮(当设备上不包含菜单按钮时)来显示这些操作项目。
图1. Honeycomb Gallery应用中的操作栏,从左边开始,依次是logo、导航选项标签和操作项(在右边插入的一个溢出菜单按钮)。
注意:如果你在查找有关上下文操作栏的信息,请看“菜单”指南。
添加操作栏
从Android3.0(API级别 11)开始,操作栏被包含在所有的使用Theme.Hole主题的Activity(或者是这些Activity的子类)中,当targetSdkVersion或minSdkVersion属性被设置为“11”或更大的数值是,这个主题是默认的主题一。如:
<manifest ... >
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="11" />
...
</manifest>
在这个例子中,应用程序要求最小的API版本级别是4(Android 1.6),但是它还要求了目标API版本级别是11(Android 3.0)。这样,当应用程序运行在Android3.0或更高的版本上时,系统就会给每个Activity应用全景主题,这样,每个Activity就会包含操作栏。
如果你想使用ActionBar API来进行添加导航模式和修改操作栏样式的操作,你应该把minSdkVersion属性设置为“11”或更大的值。如果想要你的应用程序支持更旧的Android版本,那么在支持API 级别 11或更高版本,但却依然运行着旧的Android版本的设备上,就要使用受限受限droid如果你运行咋是默认的主题一、。在溢出菜单中是有效的的ActionBar API集。
删除操作栏
对于特殊的Activity,如果你不想要操作栏,把Activity的主题设置为Theme.Holo.NoActionBar就可以了,如:
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
你也能够通过调用hide()方法在运行时隐藏操作栏,如:
ActionBar actionBar = getActionBar();
actionBar.hide();
当操作栏隐藏时,系统会调整你的Activity来填充当前有效的屏幕空间。你能够使用show()方法来再次显示操作栏。
在隐藏和删除操作栏时,要当心为了适应被操作栏占用的空间而导致的Activity的重新布局。如果你的Activity有规律的隐藏和显示操作栏,你可能想要使用覆盖模式。覆盖模式在Activity的顶部描画操作栏,而不是在它们所拥有的屏幕的区域。这样,在操作栏隐藏和重新显示时,你的布局保持不变。要使用覆盖模式,就要给Activity创建一个主题,并且把android:windowActionBarOverlay属性设置为true。
提示:如果你有一个删除了操作栏的定制化的Activity主题,它把android:windowActionBar样式属性设置为false。但是,如果你使用了删除操作栏的一个主题,那么,创建窗口将不允许操作栏再显示,因此,你不能在以后给这个Activity添加操作栏---因为getActionBar()方法将返回null。
添加操作项
有些时候,你可能想要让用户直接访问选项菜单中的一个项目,因此你要把应该在操作栏中显示的菜单项作为一个操作项来声明。操作项能够能够包含一个图标或文本标题。如果一个菜单项不作为一个操作项显示,那么系统就会把它放到溢出菜单中。溢出菜单既可以通过设备的Menu按钮来显示,也可以操作栏中一个额外的按钮来显示。
当Activity首次启动时,系统会调用onCreateOptionsMenu()方法给你的Activity组装操作栏和溢出菜单。在这个回调方法中应该加载在XML文件中定义的菜单项资源,如:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity, menu);
return true;
}
图2. 带有图标和文本标题的两个操作项,和溢出菜单按钮。
在XML文件中,你能够通过给<item>元素声明android:showAsAction=”ifRoom”s属性,请求把一个菜单项作为一个操作项来显示。用这种方式,只在有有效的空间时,菜单项才能显示在操作栏中。如果没有足够的空间,这个菜单项会显示在溢出菜单中。
如果你的菜单项支持标题和图标---带有android:title和android:icon属性---那么默认情况下,操作项仅显示图标。如果你要显示文本标题,就要给android:showAsAction属性添加withText设置,如:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:title="@string/menu_save"
android:showAsAction="ifRoom|withText" />
</menu>
注意:withText值示意操作栏要显示文本标题。操作栏会尽可能的显示这个标题,但是,如果图标有效并且受到操作栏空间的限制,文本标题有可能显示不全。
当用户选择了一个操作项时,Activity会接收一个onOptionsItemSelected()的回调,要把android:id属性支持的ID传递给这个方法。
给每个菜单项定义android:title属性是至关重要的,即使你没有给操作项声明标题。原因如下:
1.如果操作栏中没有足够的空间来显示操作项,那么菜单项就会显示在溢出菜单中,并仅显示标题;
2.屏幕阅读器要给视障用户朗读菜单项标题;
3.如果仅用图标来显示操作项,那么,用户能够长按这个项目,用操作项的标题来显示提示信息。
注意:如果你添加源于Fragment对象的菜单项,那么通过Fragment类的onCreateOptionsMenu回调方法,当用户选择其中一个Fragment菜单项时,系统会对用那个Fragment对象对应的onOptionsItemSelected()方法。但是,Activity有机会首先处理这个事件,因为系统在调用对应的Fragment对象的onOptionsItemSelected()方法之前会调用Activity的相同的回调方法。
你也能够声明一个菜单项,让它始终作为操作项来显示,而不是在空间不足时就放到溢出菜单中。大多数情况下,你不应该使用always属性值来强制一个菜单项始终显示在操作栏中,但是,当提供了一个不给溢出菜单提供默认操作的操作窗口时,你就需要始终显示一个菜单项。但是要警惕,太多的操作项会创建一个混乱的UI,并且会导致窄屏设备上的布局问题。最好的方法是使用ifRoom属性值,它允许系统在操作栏空间不足的时候,把菜单项移到溢出菜单中。
分享到:
相关推荐
android add action bar by mutiple
内容包含:android-floating-action-button.jar包,android-floating-action-button.src.zip源码,和示例代码。。 https://github.com/futuresimple/android-floating-action-button
给需要的人。看了别人的动不动都要好多分。无语。因为没分下东西,就设置1分
操作栏是一个窗口特性,确定用户的位置,和 提供用户操作和导航模式。 使用操作栏为用户提供了一个 跨应用程序系统优雅地适应熟悉的界面 对于不同的屏幕配置。
for seeing it in action. Shortcut to attrs.xml. XML Add library dependency to your build.gradle file then copy this code to layout Attributes(布局中调用) Attributes format describe ...
Android Dynamic Action,简称DA,是一种简便、可变Action的实现方案。DA框架的初衷是为了取代Context.startActivity的调用方式,使用建造者模式(Builder Pattern)构建交互参数,使程序更优美。DA框架能够对任何一个...
android-floating-action-button-master.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
kotlin in action 英文版pdf 以及kotlin for android developers 中文版pdf
Android Intent Action 大全.doc
android intent和intent action大全
React Native浮动操作栏。 水平动作栏 垂直动作条 安装 npm $ npm i react-native-floating-action-bar --save 纱 $ yarn add react-native-floating-action-bar 额外的软件包安装 该项目(目前)取决于 。 如果...
1.通过广播方式动态显示、隐藏系统栏(状态栏和导航栏), 显示:android.intent.action.SYSTEM_BAR_SHOW, 隐藏:android.intent.action.SYSTEM_BAR_HIDE 2. 系统->设置->显示->系统栏显示,添加控制系统栏功能
android intent
Floating Action Button A circular button made of paper that lifts and emits ink reactions on press. This widget supports two sizes according to Promoted Actions pattern: normal and mini. Like an ...
android-cts-2.2_r7-x86.part2.rar
Android中Action Bar的使用
android action bar例子
Manning Android in Action-英文版,英文浅显易懂,感兴趣的朋友可以下来学习。
Android View Controller An Android library for cycling through views using animations in a list. The library also provides animations as built in animations that can be used: A right flip ...