2012-07-22 92 views
18

我想知道是否有可能告诉android只在需要时拆分ActionBar,但在同一个Activity上。我的用例是,默认情况下,我在栏上的操作可以折叠,但通过长时间点击某个项目,我会进入一个“编辑任务”模式,其中操作栏用于提供一些简写编辑任务。我希望这个“编辑模式”能够使用分割动作栏,因为它具有更好的可立即显示的图标,并保留常规视图的“不分割”动作栏 - 它只是“设置”等在Android上设置splitActionBarWhenNarrow来自Java的

所以问题是,我可以设置android:uiOptions="splitActionBarWhenNarrow"从代码,而不是硬编码在清单? PS:我正在使用ActionBar Sherlock。

回答

23

本机操作栏可以设置成拆分模式。

设置窗口UI选项后,无法读取它们,因此使用ActionBarSherlock必须调用getSherlock().setUiOptions(...)。你不必同时打电话。适当时,ABS会自动调用上述内容。

必须在装饰视图被创建之前完成。要保证总是发生的最安全的地方是在你的活动onCreate方法之前你叫super.onCreate

+0

谢谢,这回答我的问题! 不幸的是,在现有活动中交换拆分/不拆分模式似乎是不可能的。我想我会创建一个细节活动,将有拆分操作栏然后,无论如何,我认为: - ) – 2012-07-22 18:51:03

+0

什么是getSherlock()函数? – tasomaniac 2012-10-13 11:43:49

+0

@tasomaniac它是OP在他的问题中引用的ActionBarSherlock的一部分。 – 2012-10-16 15:27:19

3

查看ActionBarSherlockSamples,SplitActionModes.java。

调用此显示分割动作条:

mMode = startActionMode(new AnActionModeOfEpicProportions()); 

的mMode是ActionMode的类型在此示例中,当按钮“开始”被按下时,分裂操作栏在屏幕的底部示出了当你想让操作栏消失时,你需要调用'finish()'。

AnActionModeOfEpicPropotions是ActionMode.Callback的实现:通过调用getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW)

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; 
    } 
} 
-2
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 
    returntrue; 
    } 
} 
+2

请格式化您的代码并添加一些解释。 – 2013-10-21 12:16:34

0

我只是想如果我可以在一个Activity中有一个ActionBar而在另一个中有一个分割。

我添加操作栏在onCreateOptionsMenu同时在活动和加入 getWindow()setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW)。

就在onCreate在活动之前我想要拆分动作,并让我惊讶它的工作。 :)

然后,我用getActionBar()。hide()来隐藏按钮点击分离的动作栏,它也工作。

我想如果你可以尝试这个,你可以得到这个工作和定制您的需要。最初隐藏它,onLongClick显示它并在执行必要的操作后再次隐藏它。 (我错过的唯一一件事就是用支持库来检查这个问题,会做和更新你的)

希望,这可能会以某种方式帮助你。快乐编码:)

相关问题