2012-07-22 62 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顯示它並在執行必要的操作後再次隱藏它。 (我錯過的唯一一件事就是用支持庫來檢查這個問題,會做和更新你的)

希望,這可能會以某種方式幫助你。快樂編碼:)

相關問題