Могу ли я использовать actionLayout в меню переполнения android.support.v7.widget.Toolbar?

Я пытаюсь использовать виджет SwitchCompat в меню переполнения android.support.v7.widget.Toolbar но я просто не могу заставить его работать, он всегда выглядит пустым.

Вот мое определение меню:

 <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> 

Кроме того, если я изменяю showAsAction always а never always то он отображается на панели инструментов просто отлично, но я не хочу его там, я хочу, чтобы он появился в меню переполнения, когда я нажимаю 3 точки.

Я знаю, что есть возможность использовать галочку, но дизайн, который я выполняю, вызывает вызов.

Благодарю.

Это невозможно.

Это потому, что actionLayout используется только тогда, когда элемент отображается как действие. Это эквивалентно setActionView и из документации :

Установите вид действия для этого пункта меню. Представление действий будет отображаться вместо автоматически созданного элемента элемента меню в пользовательском интерфейсе, когда этот элемент будет показан как действие внутри родителя.

Таким образом, вы можете раздувать пользовательский вид, если он используется как действие (если showAsAction never , то оно не отображается как действие, как и ожидалось).

Теперь, где-то в другом месте, в документации для ActionProvider , есть следующее:

Когда элемент меню представлен таким образом, который не позволяет создавать пользовательские действия (например, в меню переполнения), ActionProvider может выполнить действие по умолчанию.

В явном виде указано, что меню переполнения не может отображать пользовательский вид.

[Изменить: возможно обходное решение]
Если вы действительно хотите отобразить его таким образом, вы можете подделать меню переполнения с помощью PopupWindow , но тогда вы можете потерять согласованность с платформой на некоторых устройствах или даже после обновления до Android (скажем … вы использовали три круглых точки для имитации Переполнения меню, но позже он будет изменен обратно на квадраты на Android, ваше приложение будет выглядеть странно. Также есть дополнительные усилия, чтобы заставить его работать, а с помощью Menu это было бы просто.