菜单下拉菜单中的切换按钮显示空白区域



我正在尝试在选项菜单中添加一个开关,但由于某种原因,它显示的不是自定义布局,而是空白区域。

screen_on_menu_button.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Switch
        android:id="@+id/screen_on_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:switchPadding="8dp"
        android:text="@string/menu_screen_on" />
</RelativeLayout>

菜单.xml:

<item
    android:id="@+id/new_game_button"
    android:title="@string/menu_new_game"
    android:visible="true"
    app:showAsAction="always"
    android:icon="@drawable/ic_new_game"/>
<item
    android:id="@+id/change_names"
    android:title="@string/menu_change_names"
    app:showAsAction="never"/>
<item
    android:id="@+id/layout_change"
    android:title="@string/menu_change_layout"
    app:showAsAction="never"/>
<!--android:checkable="true" -->
<item
    android:id="@+id/keep_screen_on"
    app:actionLayout="@layout/screen_on_menu_button"
    app:showAsAction="never"
    android:title="" />
<item
    android:id="@+id/help_feedback"
    android:title="@string/menu_help_feedback"
    app:showAsAction="never"/>
<item
    android:id="@+id/about"
    android:title="@string/menu_about"
    app:showAsAction="never"/>

我尝试将app:actionLayout更改为 android:app:actionLayout ,删除相对布局,仅在自定义xml中保留开关,它所做的只是在layout_changehelp_feedback之间添加一个空格。如果我将 showAsAction 设置为始终,它会显示在操作栏中,但这不是我打算做的。此外,我可以选择删除开关并将菜单项设置为可检查,但同样这不是故意的,大多数类似情况都提供了我已经实现的内容。

那么,如何将该开关集成到下拉选项菜单中呢?

您无法在下拉菜单中添加自定义布局。它只接受<item><group>。另一个选项可以是将<item>android:checkable一起使用,并根据值更改默认的已检查状态。
其他选项可以是

  1. 将菜单替换为弹出窗口
  2. 使用 app:showAsAction="always" 在操作栏中显示开关。

最新更新