在 Android 上设置 splitActionBarWhenNarrow from Java

我想知道是否有可能告诉Android仅在我想要的时候拆分ActionBar,但在同一个活动上。我的用例是,默认情况下,我在栏上的操作可以折叠,但是在长按项目时,我进入“编辑任务”模式,其中操作栏用于提供一些速记来编辑任务。我希望这个“编辑模式”使用拆分操作栏,因为它的图标最好立即可见,并保留常规视图的“未拆分”操作栏 - 它只是“设置”等。

所以问题是,我是否可以从代码中设置,而不是在清单中对其进行硬编码?android:uiOptions="splitActionBarWhenNarrow"

PS:我正在使用ActionBar Sherlock。


答案 1

可以通过调用 将本机操作栏设置为拆分模式。getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW)

窗口UI选项在设置后无法读取,因此使用ActionBarSherlock,您必须调用。您不必同时调用两者。ABS将在适当的时候自动调用上述电话。getSherlock().setUiOptions(...)

必须在创建装饰视图之前完成。进行此调用以确保始终发生的最安全位置是在调用 之前的活动方法中。onCreatesuper.onCreate


答案 2

看看ActionBarSherlockSamples,SplitActionModes.java。在此示例中,当按下“Start 开始”按钮时,屏幕底部会显示一个拆分操作栏:

调用此参数以显示拆分操作栏:

mMode = startActionMode(new AnActionModeOfEpicProportions());

mMode是ActionMode的类型,当您希望操作栏消失时,您需要在其上调用'finish()'。

AnActionModeOfEpicPropotions是ActionMode.Callback的实现:

private final class AnActionModeOfEpicProportions implements ActionMode.Callback {
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // add your menu here...
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // handles your action menu clicked event
        return true;
    }
}

推荐