微调框未出现在菜单栏中

时间:2019-03-18 15:38:40

标签: android

我正在尝试通过XML在菜单栏中创建一个微调项。我的代码如下,

res / layout / spinner_filter_results.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/results_filters"/>

res / menu / menu_results.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- Spinner not showing up -->
    <item
        android:id="@+id/menuFilter"
        android:title="@string/filter"
        android:actionLayout="@layout/spinner_filter_results"
        app:showAsAction="always">
    </item>

    <item
        android:id="@+id/iconHamburger"
        android:icon="@drawable/ic_menu_white_24dp"
        app:showAsAction="ifRoom|withText"
        android:title="@string/options">
        <menu>
            <item
                android:id="@+id/menu_settings"
                android:title="@string/settings"
                android:onClick="onMenuItemClick"></item>
            <item
                android:id="@+id/menu_logout"
                android:title="@string/log_out"
                android:onClick="onMenuItemClick"></item>
        </menu>
    </item>
</menu>

这在Android Studio设计器中显示得很好,这正是我想要的:

Menu bar in Android Studio

但是在我的手机上却没有显示。

Menu bar on phone

我已经看过其他one之类的Stack Overflow帖子,但是我仍然不知道为什么上面的代码不起作用。是否有人对为什么它不显示在我的手机上有任何见解?这只是我手机的问题吗?(LG G4,Android 6.0,SDK 23)

编辑1: 我在手机上打开了“显示布局边界”。我看到微调框的菜单项存在,但似乎为空?

Empty Menu Item

1 个答案:

答案 0 :(得分:0)

根据Pavel B.的评论,我的问题是我没有用于微调器的适配器。在XML中,我更改了菜单项以使用默认的Spinner而不是我自己的自定义布局,然后在我的Activity的onCreateOptionsMenu中分配了适配器。

res / menu / menu_results.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_spinner"
        android:title="@string/filter"
        app:actionViewClass="android.widget.Spinner"
        app:showAsAction="always">
    </item>

    <item
        android:id="@+id/iconHamburger"
        android:icon="@drawable/ic_menu_white_24dp"
        app:showAsAction="ifRoom|withText"
        android:title="@string/options">
        <menu>
            <item
                android:id="@+id/menu_settings"
                android:title="@string/settings"
                android:onClick="onMenuItemClick"></item>
            <item
                android:id="@+id/menu_logout"
                android:title="@string/log_out"
                android:onClick="onMenuItemClick"></item>
        </menu>
    </item>
</menu>

Activity.java

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_results, menu);

        // Set up spinner menu item
        MenuItem menuItem = menu.findItem(R.id.menu_spinner);
        Spinner spinner = (Spinner)menuItem.getActionView();
        String[] items={"All","Item1","Item2","Item3", "Item4"};
        ArrayAdapter<String> adapter=new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,items);
        spinner.setAdapter(adapter);
        return true;
    }

它显示为:

Spinner Menu Item