2015-04-06 70 views
0

在我的應用程序中,我有一個CAB出現四個菜單項。顯示兩個,而另外兩個在溢出菜單中。在我的代碼中,當用戶在列表視圖中選擇了多個項目時,其中一個項目被刪除。當該項目被刪除時,溢出菜單消失,並顯示所有其餘三項。我希望它繼續顯示兩個項目,並將剩餘的一個隱藏在溢出菜單中。當物品被移除時,Android CAB強制溢出菜單

菜單佈局:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<!--disppears when multiple items selected --> 
<item 
    android:id="@+id/cabEdit" 
    android:title="Edit" 
    app:showAsAction="always"></item> 
<item 
    android:id="@+id/cabDel" 
    android:title="Delete" 
    app:showAsAction="ifRoom"></item> 
<item 
    android:id="@+id/cabRes" 
    android:title="Reset" 
    app:showAsAction="ifRoom"></item> 

<!-- should always appear in overflow --> 
<item 
    android:id="@+id/cabSelAll" 
    android:title="Select All" 
    app:showAsAction="never" ></item> 

感謝您的幫助!

+0

那麼,如果你使用'appcompat-v7',你的菜單資源XML看起來會給你想要的。如果您嘗試使用本地操作欄(例如,您從'Activity'而不是'ActionBarActivity')繼承,則將'app:showAsAction'更改爲'android:showAsAction'並完全清除'app'命名空間。 – CommonsWare

+0

你如何開始你的CAB?通過[startSupportActionMode()](https://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html#startSupportActionMode(android.support.v7.view.ActionMode.Callback))? – ianhanniballake

+0

@CommonsWare我正在使用ActionBarActivity,它不顯示我想如何。當刪除第一個項目時,溢出菜單消失,即使設置爲永不顯示,最後一個項目也會顯示。 –

回答

4

當您使用setMultiChoiceModeListener()時,您沒有使用支持庫版本的上下文操作欄 - 您的代碼只支持API11 +設備。

您可以(使用tools:ignore="AppCompatResource"如果要抑制皮棉錯誤)更換app:showAsActionandroid:showAsAction與平臺語境動作條的要求,以符合或響應切換到startSupportActionMode()長點擊您的列表項和管理檢查陳述你自己。

+0

Android Studio給我一個錯誤,當使用appcompat庫應用程序時:showAsAction必須被使用。代碼本身已經運行良好,但它並沒有以我想要的方式顯示。 –

+0

是的,當你使用AppCompat時,你需要使用app:showAsAction。但是,如果使用'setMultiChoiceModeListener()',則不使用AppCompat。您可以添加'tools:ignore =「AppCompatResource」'來忽略錯誤。 – ianhanniballake

+0

感謝它的工作!奇怪的是,當Android Studio實際上正常工作時會出現這種錯誤。 –