【问题标题】:Switch button in menu drop-down shows blank space菜单下拉菜单中的切换按钮显示空白
【发布时间】:2019-02-07 16:22:08
【问题描述】:

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

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 中保留开关,它所做的只是在layout_changehelp_feedback 之间添加一个空格。 如果我将 showAsAction 设置为始终显示在 ActionBar 中,但这不是我打算做的。 此外,我可以选择移除开关并将菜单项设置为 checkable,但这又不是有意的,大多数类似的情况都提供了我已经实现的内容。

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

【问题讨论】:

  • 如果你想使用 app:showAsAction="never"; 你不能这样做但是您可以使用 app:showAsAction="always" 来实现它。检查这个问题stackoverflow.com/questions/41414056/… >>> 你也可以打开一个新的对话框或活动来更改设置列表
  • 您也可以在菜单项中使用 android:checkable="true" 而不是开关

标签: java android android-optionsmenu


【解决方案1】:

您不能在下拉菜单中添加自定义布局。它只接受&lt;item&gt;&lt;group&gt;。另一个选项可以是使用 &lt;item&gt;android:checkable 并根据值更改默认选中状态。
其他选项可以是

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

【讨论】:

  • 进行检查是因为它更容易实现并且至少接近我想要实现的目标
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
相关资源
最近更新 更多