2016-02-18 75 views
10

我試圖在android.support.v7.widget.Toolbar的溢出菜單上使用SwitchCompat小部件,但我無法讓它正常工作,它總是顯示爲空白。我可以在android.support.v7.widget.Toolbar的溢出菜單上使用actionLayout嗎?

這裏是我的菜單定義:

<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="com.oveflowtest.ScrollingActivity"> 
    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings" 
     app:showAsAction="never"/> 
    <item android:id="@+id/test" 
      app:actionLayout="@layout/testlayout" 
      app:showAsAction="never"/> 
</menu> 

這裏是testlayout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 
<android.support.v7.widget.SwitchCompat 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:text="test"/> 
</LinearLayout> 

另外,如果我改變showAsActionalways,而不是never則顯示工具欄,但我不就好了我不想在那裏,我想要在按下3個點的時候打開的溢出菜單。

我知道有一個選項可以使用複選標記,但是我正在跟蹤要求切換的設計。

謝謝。

回答

11

這是不可能的。

這是因爲actionLayout僅在項目顯示爲操作時使用。它相當於setActionView,從documentation開始:

設置此菜單項的操作視圖。當此項目顯示爲父級內的操作時,將會顯示一個操作視圖來代替UI中自動生成的菜單項元素。

所以,如果它作爲一個動作就可以膨脹的自定義視圖(如果showAsActionnever,那麼它沒有顯示爲行動,如預期)。

現在,藏在別處,在documentation for ActionProvider,有這樣的:

當菜單項給出的方式,不允許自定義操作視圖(如溢出菜單)的ActionProvider可以執行默認操作。

明確指出,溢出菜單不能顯示自定義視圖。

[編輯:可能的解決方法]
如果你真的要顯示這樣的說法,你可以僞造與PopupWindow溢出菜單,但你可能會失去與平臺的一些設備甚至之後的一致性升級到Android(比方說,你用三個圓點來模擬溢出菜單,但後來它在Android上變回正方形,你的應用看起來很奇怪,還有額外的努力讓它工作,而它的Menu它會很簡單。

相關問題