ActionBar的MenuItem显示样式

来源:互联网 发布:淘宝卖家怎么看交易额 编辑:程序博客网 时间:2024/05/18 22:16

首先,对于ActionBar而言,有5种显示方式:
SHOW_AS_ACTION_NEVER
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
SHOW_AS_ACTION_ALWAYS
SHOW_AS_ACTION_IF_ROOM
SHOW_AS_ACTION_WITH_TEXT

下面对以上5种方式一一简要讲解:

SHOW_AS_ACTION_NEVER

先来看看效果
ACTION_NEVER

LANDSCAPE_NEVER
可以看到无论横屏还是竖屏动作项并没有直接显现出来,而是隐藏在省略号中(无论是否有空间)

SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW

COL未点开

COL已点开
可以看到这种样式和上一种没有区别

SHOW_AS_ACTION_ALWAYS

ALWAYS
发现所有的选项都直接被显示出来(always)

SHOW_AS_ACTION_IF_ROOM

ROOM

LANDSCAPE_ROOM
发现竖屏时只显示了两个,其余两个被隐藏到省略号中;横屏时四个都显示了出来,说明这种方式动态受到空间的限制

SHOW_AS_ACTION_WITH_TEXT

TEXT

LANDSCAPE_TEXT
发现和最开始两种效果没有区别

那么,既然5种里面有3种没有区别,为什么开发者还要定义这么多种样式呢?
其实,是由于在只使用一个样式的时候,所有的菜单项在Android中被默认收到省略号中了。

而使用“|”(按位或)把不同样式分隔,变成组合样式就能看出其不同。

例如:SHOW_AS_ACTION_ALWAYS|SHOW_AS_ACTION_WITH_TEXT

VERTICAL

LANDSCAPE
可以看到竖屏是按照SHOW_AS_ACTION_ALWAYS的方式显示,而横屏时由于空间足够,两种显示形式都体现了出来。

更多的组合有兴趣的读者可以自行尝试。

而一件有趣的事情,有的读者可能已经发现了,SHOW_AS_ACTION_NEVERSHOW_AS_ACTION_ALWAYS是两个互斥的样式,放在一起会有什么效果?

下面我就对这种情况进行尝试:
SHOW_AS_ACTION_ALWAYS|SHOW_AS_ACTION_NEVER
NEVER_ALWAYS
发现效果和ALWAYS相同。

其实道理是很简单的,查看一下这五个常量的定义:
SHOW_AS_ACTION_NEVER = 0 = 0000B;
SHOW_AS_ACTION_IF_ROOM = 1 = 0001B;
SHOW_AS_ACTION_ALWAYS = 2 = 0010B;
SHOW_AS_ACTION_WITH_TEXT = 4 = 0100B;
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8 = 1000B;
很简单,任何样式和NEVER或的时候,都会得到那个样式本身,所以其实NEVER样式其实是充当了一个类似或运算中单位元的角色。
而从这些常量中也能看出,为什么按位或运算能达到组合不同样式的目的了。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老公是个窝囊废怎么办 幼儿园老师不喜欢家长怎么办 老师讨厌学生了怎么办 一个舍友很讨厌怎么办 家长对老师不满怎么办 教师被家长辱骂怎么办 如果老师喜欢自己怎么办 孩子不思进取逃避学习怎么办 老师拿孩子泄愤怎么办 老师对小孩不好怎么办 孩子被老师骂怎么办 孩子幼儿园被打怎么办 两个家长吵架老师怎么办 家长和老师矛盾怎么办 孩子特别害怕老师怎么办? 老师排挤孤立孩子怎么办 很害怕一件事怎么办 高中老师误会我怎么办 家长讹老师老师怎么办 小孩子老说头疼怎么办 孩子总是否定自己怎么办 孩子总是否定别人怎么办 老师屏蔽家长该怎么办 初二学生学疲劳怎么办 孩子不愿补英语怎么办 培训班孩子不学怎么办 小孩不想去学校怎么办 讨厌父母的性格怎么办 老师揪孩子耳朵怎么办 老师整天骂孩子怎么办 教师被学生骂怎么办 幼儿园学生骂老师怎么办 学生骂老师外号怎么办 小孩上课很多嘴怎么办 学生老玩手机怎么办 和校长有了矛盾怎么办 家长打了我怎么办 小朋友不想去幼儿园怎么办 小朋友不想上幼儿园怎么办 高中老师打学生家长怎么办 老师偏心学生该怎么办?