ActionBar的MenuItem显示样式

首先,对于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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值