2015-05-27 16 views
2

我試圖控制其動作欄項目將顯示是否有空間有限,並試圖在這一問一答的解決方案:Icons priority on action bar圖標的優先行動欄上(保持項目的順序)

一切正常除了我想要以不同於優先級的方式來保持圖標的順序之外,還有其他問題,而上面的解決方案會導致項目重新排序。有沒有辦法設置項目顯示的優先級,而不改變項目在操作欄中的顯示順序?

我已經嘗試改變xml中項目的順序,並且這對渲染的項目順序沒有影響(沒有orderInCategory,更改文件中的順序的確會導致順序的變化項目呈現)。

我正在開發針對ICS。

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/action_edit" 
     android:icon="@android:drawable/ic_menu_edit" 
     android:title="@string/action_edit" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="1" 
     /> 

    <item 
     android:id="@+id/action_undo" 
     android:icon="@android:drawable/ic_menu_revert" 
     android:title="@string/action_undo" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="2" 
     /> 

    <item 
     android:id="@+id/action_delete" 
     android:icon="@android:drawable/ic_menu_delete" 
     android:title="@string/action_delete" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="3" 
     /> 

    <!-- I want this item to be on the right, 
    but shown in preference to any other items; 
    setting it's orderInCategory to 0 ensures that it 
    is shown in preference to other items, 
    but always places it on the left --> 
    <item 
     android:id="@+id/action_addnew" 
     android:icon="@android:drawable/ic_menu_add" 
     android:title="@string/action_addnew" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="0" 
     /> 
</menu> 

感謝。

+0

請發佈您的代碼 – NarenderNishad

+0

@NarenderNishad完成! – GHC

+0

@GCH請查看我的回答 – NarenderNishad

回答

2

該項目是從放在右至左順序,以便通過重新排列物品,它可以幫助

<item 
    android:id="@+id/action_addnew" 
    android:icon="@android:drawable/ic_menu_add" 
    android:title="@string/action_addnew" 
    android:showAsAction="always" 
    android:orderInCategory="0" 
    /> 
<menu> 
    <item 
     android:id="@+id/action_edit" 
     android:icon="@android:drawable/ic_menu_edit" 
     android:title="@string/action_edit" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="1" 
    /> 

    <item 
     android:id="@+id/action_undo" 
     android:icon="@android:drawable/ic_menu_revert" 
     android:title="@string/action_undo" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="2" 
    /> 

    <item 
     android:id="@+id/action_delete" 
     android:icon="@android:drawable/ic_menu_delete" 
     android:title="@string/action_delete" 
     android:showAsAction="ifRoom" 
     android:orderInCategory="3" 
    /> 
</menu> 
+0

我試過這個(我會編輯問題),它似乎沒有區別 - orderInCategory中的值似乎覆蓋項目在文件中出現的順序。爲了避免疑問,在問題和xml中使用xml就像在答案中一樣產生相同的結果。 – GHC

+0

刪除android:orderInCategory =「」屬性,然後嘗試 – Shahzeb

+0

如果您希望某些項目以溢出模式出現,請將它們分組在

標記 – Shahzeb

0
android:orderInCategory 

這遞交作品從右到左,所以你需要右鍵根據你的代碼記住這一點。

+0

我不確定我是否理解。我應該怎麼做才能獲得我想要的行爲? – GHC

0

我從閱讀你的問題中得到的是你想要顯示的action_addnew應該出現在正確的&它應該總是出現給大家。
試試這個

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item 
      android:id="@+id/action_edit" 
      android:icon="@android:drawable/ic_menu_edit" 
      android:title="@string/action_edit" 
      android:showAsAction="ifRoom" 
      /> 

     <item 
      android:id="@+id/action_undo" 
      android:icon="@android:drawable/ic_menu_revert" 
      android:title="@string/action_undo" 
      android:showAsAction="ifRoom" /> 

     <item 
      android:id="@+id/action_delete" 
      android:icon="@android:drawable/ic_menu_delete" 
      android:title="@string/action_delete" 
      android:showAsAction="ifRoom" 
      /> 

     <item 
      android:id="@+id/action_addnew" 
      android:icon="@android:drawable/ic_menu_add" 
      android:title="@string/action_addnew" 
      android:showAsAction="always" 
      /> 
    </menu> 
+0

這幾乎可以肯定適用於這種特殊情況,我有一個幾乎肯定會適合的圖標。 android文檔聲明「總是」表示「總是將這個項目放置在操作欄中,避免使用它,除非這個項目總是出現在操作欄中是非常重要的。設置多個項目始終顯示爲操作項目可能會導致它們重疊操作欄中的其他用戶界面。「在這種情況下,我不介意如果按鈕在沒有空間的情況下在溢出菜單上結束,但如果它顯示,我希望能夠控制它呈現的位置。 – GHC

+0

爲了避免疑問,一旦我知道如何做到這一點,我會指定一個命令來顯示其他項目,這些項目不一定是它們應該顯示在欄上的優先順序/隱藏在溢出。 – GHC

0

從左至右給第一項

android:orderInCategory="0" 

和第二項

android:orderInCategory="1" 

等。