Android setDisplayOptions 的用法详解

Android中有几个地方用到了位运算,比如Intent Flags,自定义View onMeasure(int widthMeasureSpec, int heightMeasureSpec),还有ActionBar setDisplayOptions ,下面就理解一下setDisplayOptions的用法。

先看下文档中对他的描述:

public abstract void setDisplayOptions (int options)

Added in API level 11

Set display options. This changes all display option bits at once. To change a limited subset of display options, see setDisplayOptions(int,
int)
.

Parameters
options A combination of the bits defined by the DISPLAY_ constants defined in ActionBar.

一次性设置选项这个方法,如果要设置部分,那么使用下面的方法

public abstract void setDisplayOptions (int options, int mask)

Added in API level 11

Set selected display options. Only the options specified by mask will be changed. To change all display option bits at once, see setDisplayOptions(int).

Example: setDisplayOptions(0, DISPLAY_SHOW_HOME) will disable the DISPLAY_SHOW_HOME option.
setDisplayOptions(DISPLAY_SHOW_HOME, DISPLAY_SHOW_HOME | DISPLAY_USE_LOGO) will enable DISPLAY_SHOW_HOME and
disable DISPLAY_USE_LOGO.

Parameters
options A combination of the bits defined by the DISPLAY_ constants defined in ActionBar.
mask A bit mask declaring which display options should be changed.

选择部分来显示设置,只有当options在mask中被设置才能被显示,也就是设置为true。

那么问题来了。。。

到底怎么用options 和mask尼?看下面内容

  • ActionBar默认如果没有做任何设置,会显示出一个箭头(DISPLAY_HOME_AS_UP),一个logo(DISPLAY_SHOW_HOME),标题(DISPLAY_SHOW_TITLE)
  • 一旦使用setDisplayOptions(int options)这个方法,所有的设置项都变成了false,options使用或运算添加设置,添加一个就设置一个为true-显示,比如setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM),就是设置显示返回箭头和customView
  • setDisplayOptions(int options,int mask)方法,即在当前默认的ActionBar设置项内,选择几个来设置,这样的场景可能是Activity内部的Fragment,需要给Fragment设置ActionBar的几个确定选项,比如
 getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM,
                ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM);

options为 ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM

mask为 ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM

mask和options中都有ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM,那么就是把箭头和customView设置为显示,mask中剩下的ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME 就设置为隐藏,即对应的setDisplayShowTitleEnabled(false),其他没有提到的选项就应该为默认的配置。

可以这样理解,mask和option执行了&运算,同时出现的为true,出现一个的为false。

知道了原理我们就可以这样用,比如我们只要显示a,b,c三个选项,

那么就使用getSupportActionBar().setDisplayOptions(
a|b|c );

如果我们在特定的条件下,比如fragment中,需要只对b,c,d这三个选项进行设置,把b,c设置为显示,d设置为隐藏,那么就可以使用getSupportActionBar().setDisplayOptions(b|c
, b|c|d );

用了这个方法就不需要一个一个的设置setDisplayShowXXX()了

了解更多可以去:http://blog.csdn.net/zzp16/article/details/7956768

时间: 2024-10-13 23:19:34

Android setDisplayOptions 的用法详解的相关文章

Android adb logcat用法详解

1. 解析 adb logcat 的帮助信息 在命令行中输入 adb logcat --help 命令, 就可以显示该命令的帮助信息; [plain] view plaincopy [email protected]:~$ adb logcat --help Usage: logcat [options] [filterspecs] options include: -s              Set default filter to silent. Like specifying fil

Android开发技巧之viewstub用法详解及实现延迟加载

这一篇是接着上面的include标签的例子来讲的,地址http://blog.csdn.net/jason0539/article/details/26131831 上一篇的布局中间就用了viewstub这个控件,现在来说一下其作用和用法 " ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View " 需要注意的是,加载view之后,viewstub本身就会被新加载进来的view替换掉 上代码了,看完就理解了

Android开发之DatePickerDialog与TimePickerDialog的功能和用法详解

DatePickerDialog与TimePickerDialog的功能比较简单,用法也很简单,只要下面两步即可. ?  通过new关键字创建DatePickerDialog.TimePickerDialog实例,调用它们的show()方法即可将日期选择对话框.时间选择对话框显示出来. ?  为DatePickerDialog.TimePickerDialog绑定监听器,这样可以保证用户通过DatePickerDialog.TimePickerDialog设置事件是触发监听器,从而通过监听器来获

Android GLSurfaceView用法详解(二)

输入如何处理       若是开发一个交互型的应用(如游戏),通常需要子类化 GLSurfaceView,由此可以获取输入事件.下面有个例子: java代码: package eoe.ClearTest; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.app.Activity; import android.conte

(转)ProgressDialog用法详解

转载自: ProgressDialog用法详解 ProgressDialog的基本用法 ProgressDialog为进度对话框.android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西. 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的.  setTitlt:设置标题  setMessage:设置提示信息:  setIcon:设置标题图标:  setIndeter

Android四大组件--Activity详解

Android四大组件--Activity详解 分类: android android应用android开发 本文的主要内容包括1.activity的建立.配置和使用:2.activity的跳转和传值:3.startActivityForResult:4.activity的生命周期. 1.activity的建立.配置和使用 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供一个可视的窗口,一般情况

Android中Intent组件详解

Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作.与动作有关的数据等.Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传递给所找到的组件,Android的媒婆任务就完成了. 在Google Doc中是这样描述Intent的(摘自Android中文翻译组)当接收到ContentR

Android开发之InstanceState详解

Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能.Android实现屏幕旋转异步下载效果这样两个示例. 首先来介绍onSaveInstanceState() 和 onRestoreInstanceState() .关于这两个方法,一些朋友可能在Andr

Android 开发 之 Fragment 详解

作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 1. Fragement 概述 Fragement 与 Activity 生命周期关系 : Fragement 嵌入到 Activity 组件中才可以使用, 其生命周期与 Activity 生命周期相关. -- stop 与 destroy 状态 : Activity 暂停 或者 销毁的时候, 其内部嵌入的所有的 Fragement 也会执行