Кнопка переключения в раскрывающемся меню показывает пустое пространство - PullRequest
0 голосов
/ 06 февраля 2019

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

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_change и help_feedback.Если я установлю showAsAction на всегда, оно будет отображаться в ActionBar , но это не то, что я намерен делать.Кроме того, у меня есть возможность убрать переключатель и установить пункт меню как checkable , но, опять же, это не предназначено, и большинство подобных случаев предоставляют то, что я уже реализовал.

Итак, какможно интегрировать этот переключатель в выпадающее меню опций?

1 Ответ

0 голосов
/ 07 февраля 2019

Вы не можете добавить пользовательский макет в выпадающем меню.Он принимает только <item> или <group>.Другим вариантом может быть использование <item> с android:checkable и изменение установленного по умолчанию состояния в зависимости от значения.
Другими параметрами могут быть

  1. , замените меню на PopupWindow
  2. отобразить переключатель на панели действий, используя app:showAsAction="always".
...