Android 系列 6.5控制操作栏
2017-01-11 09:13
267 查看
6.5控制操作栏
问题
操作栏是大多数现代Android应用程序的重要组成部分。你需要知道如何创建,配置和,当必要时,隐藏操作栏。
解
在布局中使用工具栏或较旧的ActionBar,并使用XML和代码的混合来控制操作栏的功能。
讨论
操作栏在Android Honeycomb(3.0,API 11)中引入,作为大多数正常应用程序的标准组件。没有操作栏的应用程序的一个常见用例是全屏应用程序,如相机,照片显示/编辑或视频游戏。
操作栏包含一个大约为屏幕垂直大小5%的全宽矩形,左侧有一个图标和程序名称,一个“溢出菜单”图标(替换旧版Android硬件上显示的硬菜单按钮)右侧(垂直行中的三个点),以及可选地在溢出菜单的左侧的动作。典型的布局如图6-2所示。
Figure 6-2。操作栏一般布局
有几种方法来获取ActionBar。假设您定位现代版本(4.0及更高版本),您将自动拥有一个操作栏,除非您提供的应用程序主题不是直接或间接从Holo主题派生。这将由“标准”android.app.ActionBar类实现。这个的一个缺点是,自从ActionBar引入(Android 3.0)和现代版本(如Android 7.0)之后,一些功能已经添加,因此你可能调用存在于现代版本的方法,但不会存在于用户的设备(如果它们运行的是旧版本)。这当然会结束了。
因此,当前的建议是使用“v7 appcompat”库。现在这个库实际上提供了两个不同的ActionBar实现,即appcompat ActionBar和推荐的appcompat ToolBar类。 ToolBar比操作栏更通用,可以在不同的地方使用,虽然我们只会考虑在这里使用它作为一个操作栏。
因此,您的操作栏的建议步骤如下:
1.确保包含v7 appcompat;该库的API 24的坐标是com.android.support:appcompat-v7:24.1.1
2.使您的活动扩展AppCompatActivity,而不是活动
3.在AndroidManifest.xml中,将<application>元素设置为使用NoActionBar主题,以便不会添加本机ActionBar(两个操作栏不会很好地共存)。
4.在布局文件中,使用android.support.v7.widget.Toolbar(如
示例6-5),并将其放置在布局的顶部,使其看起来像一个标准的动作栏。
5.在您的Activity启动代码中,使用setCompatActionBar()将此工具栏设置为操作栏。
示例6-5是由Android Studio生成的带有工具栏的布局文件:
实施例6-5。 XML布局使用兼容工具栏作为操作栏
示例6-6是此示例应用程序的活动代码。
实施例6-6。兼容工具栏的活动代码
getCompatActionBar().hide()
getCompatActionBar().show()
事实上,任何标准的appcompat ActionBar方法都可以使用。 getCompatActionBar()方法不直接返回工具栏,而是将其包装在ToolbarActionBar中,顾名思义,它提供了所有的ActionBar方法。
在这个食谱的第一段,我们提到“溢出菜单”,而不解释。传统的Android选项菜单出现以响应“菜单按钮”,但是现代Android设备不需要具有用于此目的的物理按钮。相反,操作栏右侧的三个点(见图6-2)调出菜单。但是 - 这是操作栏的原始用途之一 - 您可以从活动的菜单中“推广”菜单项到操作栏!所有你需要做的是在menu.xml文件中添加showAsAction属性。
此属性可以取值never(默认值),ifRoom(其值为明显)和always(这也是显而易见的,但不建议使用它;您应该使用ifRoom优先于最后一个选项)。
这是一个添加到默认菜单文件的帮助菜单项
图6-3。操作栏与菜单项
与其他菜单项一样,您可以使用文本,图标或两者。
问题
操作栏是大多数现代Android应用程序的重要组成部分。你需要知道如何创建,配置和,当必要时,隐藏操作栏。
解
在布局中使用工具栏或较旧的ActionBar,并使用XML和代码的混合来控制操作栏的功能。
讨论
操作栏在Android Honeycomb(3.0,API 11)中引入,作为大多数正常应用程序的标准组件。没有操作栏的应用程序的一个常见用例是全屏应用程序,如相机,照片显示/编辑或视频游戏。
操作栏包含一个大约为屏幕垂直大小5%的全宽矩形,左侧有一个图标和程序名称,一个“溢出菜单”图标(替换旧版Android硬件上显示的硬菜单按钮)右侧(垂直行中的三个点),以及可选地在溢出菜单的左侧的动作。典型的布局如图6-2所示。
Figure 6-2。操作栏一般布局
有几种方法来获取ActionBar。假设您定位现代版本(4.0及更高版本),您将自动拥有一个操作栏,除非您提供的应用程序主题不是直接或间接从Holo主题派生。这将由“标准”android.app.ActionBar类实现。这个的一个缺点是,自从ActionBar引入(Android 3.0)和现代版本(如Android 7.0)之后,一些功能已经添加,因此你可能调用存在于现代版本的方法,但不会存在于用户的设备(如果它们运行的是旧版本)。这当然会结束了。
因此,当前的建议是使用“v7 appcompat”库。现在这个库实际上提供了两个不同的ActionBar实现,即appcompat ActionBar和推荐的appcompat ToolBar类。 ToolBar比操作栏更通用,可以在不同的地方使用,虽然我们只会考虑在这里使用它作为一个操作栏。
因此,您的操作栏的建议步骤如下:
1.确保包含v7 appcompat;该库的API 24的坐标是com.android.support:appcompat-v7:24.1.1
2.使您的活动扩展AppCompatActivity,而不是活动
3.在AndroidManifest.xml中,将<application>元素设置为使用NoActionBar主题,以便不会添加本机ActionBar(两个操作栏不会很好地共存)。
4.在布局文件中,使用android.support.v7.widget.Toolbar(如
示例6-5),并将其放置在布局的顶部,使其看起来像一个标准的动作栏。
5.在您的Activity启动代码中,使用setCompatActionBar()将此工具栏设置为操作栏。
示例6-5是由Android Studio生成的带有工具栏的布局文件:
实施例6-5。 XML布局使用兼容工具栏作为操作栏
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.androidcookbook.actionbarcompat.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:padding="5dp"/> </LinearLayout> </android.support.design.widget.CoordinatorLayout>CoordinatorLayout是appcompat库的一部分,并且需要在其直接子节点上使用app:layout_behavior属性;没有它,它们被忽略。
示例6-6是此示例应用程序的活动代码。
实施例6-6。兼容工具栏的活动代码
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); } ... }一旦你创建了你的操作栏,你可以通过各种方式控制它。要使您的操作栏消失或重新出现,您可以使用
getCompatActionBar().hide()
getCompatActionBar().show()
事实上,任何标准的appcompat ActionBar方法都可以使用。 getCompatActionBar()方法不直接返回工具栏,而是将其包装在ToolbarActionBar中,顾名思义,它提供了所有的ActionBar方法。
在这个食谱的第一段,我们提到“溢出菜单”,而不解释。传统的Android选项菜单出现以响应“菜单按钮”,但是现代Android设备不需要具有用于此目的的物理按钮。相反,操作栏右侧的三个点(见图6-2)调出菜单。但是 - 这是操作栏的原始用途之一 - 您可以从活动的菜单中“推广”菜单项到操作栏!所有你需要做的是在menu.xml文件中添加showAsAction属性。
此属性可以取值never(默认值),ifRoom(其值为明显)和always(这也是显而易见的,但不建议使用它;您应该使用ifRoom优先于最后一个选项)。
这是一个添加到默认菜单文件的帮助菜单项
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.androidcookbook.actionbarcompat.MainActivity"> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> <item android:id="@+id/action_help" android:title="Help" app:showAsAction="ifRoom" /> </menu>这将产生如图6-3所示的布局。
图6-3。操作栏与菜单项
与其他菜单项一样,您可以使用文本,图标或两者。
相关文章推荐
- android开源系列:CircleImageView采用圆形控制它们的定义
- Android官方开发文档Training系列课程中文版:管理音频播放之控制APP的音量与播放
- android下usb框架系列文章---(4)android下的光盘功能控制
- Android官方开发文档Training系列课程中文版:调用相机之控制相机
- android——框架的实现系列(界面跳转的控制)
- FFmpeg全新系列之3.2.2版本于CentOS6.5安装并实现Android移植编译-秒懂-你-逆袭必备
- 羊皮书APP(Android版)开发系列(三)APP引导页启动控制
- Android 系列 6.6向操作栏添加共享操作
- UVC系列5-编写Android jni代码实现控制PTZ
- 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释
- Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式
- Android 系列 2.12使用KeyListener控制输入
- UVC系列1-Android盒子控制云台摄像头系列
- 【Android开发系列】Android开发第一步-----开发环境配置 + 运行sample
- MSDN Visual系列:使用BDC操作来控制业务数据
- AR系列路由器包过滤控制访问列表的配置
- javascript入门系列演示·流程控制之 判断、循环
- BBS 设计思路系列 ---- 调查帖的质量与数量控制
- iTextSharp 问题系列:在PDFPtable里加入图像,如何控制图像大小
- [Windows网络操作]Windows 系列操作系统远程控制