下拉菜单中的切换按钮显示空白 space
Switch button in menu drop-down shows blank space
我正在尝试在选项菜单中添加一个开关,但出于某种原因,它显示的不是自定义布局而是空白 space。
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>
menu.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 中的开关,它所做的只是添加一个白色 space 在 layout_change
和 help_feedback
之间。
如果我将 showAsAction 设置为始终显示在 ActionBar 中,但这不是我打算做的。
此外,我可以选择删除开关并将菜单项设置为 checkable,但这同样不是我想要的,大多数类似的情况提供了我已经实现的内容。
那么,我怎样才能将该开关集成到下拉选项菜单中呢?
您不能在下拉菜单中添加自定义布局。它只接受 <item>
或 <group>
。另一个选项可以是将 <item>
与 android:checkable
一起使用,并根据值更改默认选中状态。
其他选项可以是
- 用 PopupWindow 替换菜单
- 使用
app:showAsAction="always"
在操作栏中显示开关。
我正在尝试在选项菜单中添加一个开关,但出于某种原因,它显示的不是自定义布局而是空白 space。
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>
menu.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 中的开关,它所做的只是添加一个白色 space 在 layout_change
和 help_feedback
之间。
如果我将 showAsAction 设置为始终显示在 ActionBar 中,但这不是我打算做的。
此外,我可以选择删除开关并将菜单项设置为 checkable,但这同样不是我想要的,大多数类似的情况提供了我已经实现的内容。
那么,我怎样才能将该开关集成到下拉选项菜单中呢?
您不能在下拉菜单中添加自定义布局。它只接受 <item>
或 <group>
。另一个选项可以是将 <item>
与 android:checkable
一起使用,并根据值更改默认选中状态。
其他选项可以是
- 用 PopupWindow 替换菜单
- 使用
app:showAsAction="always"
在操作栏中显示开关。