如何以编程方式控制ActionBar拆分?

时间:2011-11-25 16:28:54

标签: android android-actionbar android-4.0-ice-cream-sandwich

如果活动的参数“ActionBar”设置为“uiOptions”,则Android splitActionBarWhenNarrow可能会拆分为顶部和底部栏,请注意此参数仅在ICS中有效。

Honeycomb使用操作栏为多选列表项引入了一种新方法。当一件物品被按下时保持列表变为多选模式,操作栏可用于完成某些操作。操作栏设置继承自列表活动,即,如果活动具有拆分操作栏,则多选也将具有,并且如果活动仅具有顶栏,则多选将符合该选项。

问题是,是否可以在活动中只有一个顶部操作栏,当列表变为多选模式时,以编程方式拆分操作栏?

谢谢!

5 个答案:

答案 0 :(得分:26)

不,您无法动态切换分割和非分割操作栏。

android:uiOptions的设置者对应Window,而不是ActivityWindow#setUiOptions是方法,要使用的标记是ActivityInfo#UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW

然而,这不会做你想要的。必须指定狭义时的分割操作栏,因为在初始化窗口装饰之前首先配置窗口。换句话说,一旦窗口显示出来(甚至一旦你调用了setContentView),就改变它为时已晚。

这是Android UX团队有意识的决定。操作模式(包括选择模式)用于镜像当前活动上操作栏的配置。这为用户提供了在同一活动中查找当前有效操作的单一位置。

答案 1 :(得分:2)

我不相信。 Activity中没有任何内容可以作为android:uiOptions的对应设置。

答案 2 :(得分:1)

AppCompat软件包现在提供了工具栏小部件,允许您将操作栏放在布局中的任何位置,并像任何其他视图一样进行修改。

请参阅完整文档here和指南here

答案 3 :(得分:0)

您可以尝试在getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW)Activity设置ActionBar onCreate(),使其显示为getActionBar.hide()之前的分割,然后使用getActionBar.show()隐藏它并在您要引用的列表操作上使用ActionBar弹出窗口。

我尝试过(不是使用支持库),在Activity中显示{{1}},使用上面的方法在另一个中分割,并且可以隐藏并显示按钮点击的拆分。希望这可以帮助。如果它确实甚至没有,请告诉我。快乐的编码。 :)

答案 4 :(得分:0)

您可以使用两个工具栏。看看这些问题:

AppCompat v7:21 Split Action Bar Broken?

How to center action menu on toolbar