2017-01-19 76 views
1

這是我menu.xml文件如何防止在選擇時摺疊ActionBar菜單?

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context=".MainActivity"> 

<item 
    android:id="@+id/filter" 
    android:icon="@drawable/filter" 
    app:showAsAction="always" 
    android:title="Filter"> 

    <menu> 
     <item 
      android:id="@+id/action_dropdown1" 
      android:title="free" 
      android:checkable="true" 
      app:showAsAction="always" 
      android:icon="@drawable/ic_free"/> 
     <item 
      android:id="@+id/action_dropdown2" 
      android:title="paid" 
      android:icon="@drawable/ic_paid"> 

      <menu> 
       <group android:checkableBehavior="all"> 

       <item 
        android:id="@+id/paid_cat1" 
        android:title="0-50" 
        android:checkable="true" 
        android:icon="@drawable/ic_paid"/> 
       <item 
        android:checkable="true" 
        android:id="@+id/paid_cat2" 
        android:title="51-100" 
        android:icon="@drawable/ic_paid"/> 

       <item 
        android:checkable="true" 
        android:id="@+id/paid_cat3" 
        android:title="101-500" 
        android:icon="@drawable/ic_paid"/> 

       <item 
        android:checkable="true" 
        android:id="@+id/paid_cat4" 
        android:title="500-10,000" 
        android:icon="@drawable/ic_paid"/> 

       <item 
        android:checkable="true" 
        android:id="@+id/paid_cat5" 
        android:title="show all" 
        android:icon="@drawable/ic_paid"/> 

       </group> 

      </menu> 
      </item> 

     <item 

      android:id="@+id/action_find" 
      android:title="find" 
      android:icon="@drawable/ic_search_black_24dp"/> 

    </menu> 
    </item> 

<item 
    android:id="@+id/action_search" 
    android:icon="@android:drawable/ic_menu_search" 
    app:showAsAction="always" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    android:title="Search"/> 

我想實現的是用戶應該能夠選擇多個菜單項時,當他們點擊菜單複選框什麼......但我只要單擊項目就消失

或者有沒有更好的替代方案,以實現我想用微調以及相同,但它的表現同樣

回答

0

您可以使用彈出菜單錨定在菜單項自定義佈局。
顯示彈出菜單時, 「有償」 菜單項被點擊 -

這是自定義佈局checkable_items.xml -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:background="@android:color/white" 
android:orientation="vertical"> 

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="0-50" /> 

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="51-100" /> 

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="101-500" /> 

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="500-10,000" /> 

</LinearLayout> 

更新菜單文件 -

<?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" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context=".MainActivity"> 

<item 
    android:id="@+id/filter" 
    android:icon="@android:drawable/ic_dialog_email" 
    android:title="Filter" 
    app:showAsAction="always"> 

    <menu> 
     <item 
      android:id="@+id/action_dropdown1" 
      android:checkable="true" 
      android:icon="@android:drawable/btn_dialog" 
      android:title="free" 
      app:showAsAction="always" /> 
     <item 
      android:id="@+id/action_dropdown2" 
      android:icon="@android:drawable/btn_minus" 
      android:title="paid"> 

     </item> 

     <item 

      android:id="@+id/action_find" 
      android:icon="@android:drawable/ic_dialog_email" 
      android:title="find" /> 

    </menu> 
</item> 

<item 
    android:id="@+id/action_search" 
    android:icon="@android:drawable/ic_menu_search" 
    android:title="Search" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    app:showAsAction="always" /> 
</menu> 

您可以隨時使用mPopupWindow.dismiss()關閉彈出窗口。希望這有助於!

enter image description here

+0

它的工作,但圖標沒有,在彈出的窗口中可見,他們是在菜單 –

+0

其doning的伎倆,但事情是在popwindow圖標可見是不可見的,基本上我們在這裏做的是,當菜單開除我們顯示popwindow和它看起來完全不同是有反正,以防止菜單被解僱。任何幫助將被處理 –

+0

在popwindow圖標不可見 - 它是一個自定義的佈局..所以你可以添加圖標到左側,並將複選框向右移動,使其看起來完全是你想要的。 –