我想知道是否有可能告诉android只在我想要的时候拆分ActionBar,但是在同一个Activity上。我的用例是默认情况下,我在栏上的操作可以折叠,但是长按一下项目,我进入“编辑任务”模式,其中操作栏用于提供一些简写编辑任务。我希望这种“编辑模式”能够使用分割操作栏,因为它具有最好立即可见的图标,并保留一般视图的“不分割”操作栏 - 它只是“设置”等
所以问题是,我可以从代码中设置android:uiOptions="splitActionBarWhenNarrow"
,而不是在Manifest中对其进行硬编码吗?
PS:我正在使用ActionBar Sherlock。
答案 0 :(得分:23)
可以通过调用getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW)
将原生操作栏设置为拆分模式。
设置窗口UI选项后无法读取它们,因此使用ActionBarSherlock,您必须调用getSherlock().setUiOptions(...)
。你不必同时打电话。 ABS将在适当时自动调用上述内容。
必须在创建装饰视图之前完成。最安全的地方是确保始终发生这种情况,请在您的活动onCreate
方法之前致电super.onCreate
。
答案 1 :(得分:3)
看一下ActionBarSherlockSamples,SplitActionModes.java。在此示例中,当按下“开始”按钮时,屏幕底部会显示一个分割操作栏:
调用此方法显示拆分操作栏:
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;
}
}
答案 2 :(得分:0)
如果我在一个Activity中有一个ActionBar而在另一个Activity中有一个Split,那我只是在尝试。
我在两个活动中添加了onCreateOptionsMenu中的操作栏并添加了 。getWindow()setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);
就在onCreate之前我想要分裂动作并且令我惊讶它有效。 :)
然后我使用getActionBar()。hide()来隐藏按钮点击时的分割操作栏,它也有效。
我想如果你能试试这个,你可以根据自己的需要进行定制。最初隐藏它并onLongClick显示它并在执行必要的操作后再次隐藏它。 (我唯一遗漏的是用支持库检查这个。会做并更新你)
希望,这可能会在某种程度上帮助你。快乐的编码:)
答案 3 :(得分:-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;
}
}