Android 微调器未出现在菜单栏中

Android 微调器未出现在菜单栏中,android,Android,我正试图通过XML在菜单栏中创建一个微调器项。我的代码如下: res/layout/spinner\u filter\u results.xml <Spinner xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@arr

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

res/layout/spinner\u filter\u 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"/>
<?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>
<?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>

res/menu/menu\u 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"/>
<?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>
<?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>

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

但在我的手机上它没有显示

我看过其他类似的堆栈溢出文章,但我仍然不明白上面的代码为什么不起作用。有人知道为什么它没有出现在我的手机上吗?这只是我手机的问题吗?(LG G4、Android 6.0、SDK 23)

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


根据Pavel B的评论,我的问题是我的微调器没有适配器。在XML中,我将菜单项更改为使用默认微调器,而不是使用自己的自定义布局,然后在活动的
onCreateOptions菜单中分配适配器

res/menu/menu\u 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"/>
<?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>
<?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;
    }
@覆盖
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu\u结果,菜单);
//设置微调器菜单项
MenuItem MenuItem=menu.findItem(R.id.menu\u微调器);
微调器微调器=(微调器)menuItem.getActionView();
字符串[]项={“全部”、“项1”、“项2”、“项3”、“项4”};
ArrayAdapter=新的ArrayAdapter(此,R.layout.support\u simple\u spinner\u dropdown\u项,项);
旋转器。设置适配器(适配器);
返回true;
}
它显示为:


根据Pavel B的评论,我的问题是我的微调器没有适配器。在XML中,我将菜单项更改为使用默认微调器,而不是使用自己的自定义布局,然后在活动的
onCreateOptions菜单中分配适配器

res/menu/menu\u 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"/>
<?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>
<?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;
    }
@覆盖
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu\u结果,菜单);
//设置微调器菜单项
MenuItem MenuItem=menu.findItem(R.id.menu\u微调器);
微调器微调器=(微调器)menuItem.getActionView();
字符串[]项={“全部”、“项1”、“项2”、“项3”、“项4”};
ArrayAdapter=新的ArrayAdapter(此,R.layout.support\u simple\u spinner\u dropdown\u项,项);
旋转器。设置适配器(适配器);
返回true;
}
它显示为:


您是否已将适配器添加到微调器中,其中包含要显示的项目?-如果没有,它应该保持隐形。哦!不,我没有。微调器根本没有适配器。我不知道它需要一个。我去看看怎么做。非常感谢。是否已将适配器添加到微调器中,其中包含要显示的项目?-如果没有,它应该保持隐形。哦!不,我没有。微调器根本没有适配器。我不知道它需要一个。我去看看怎么做。非常感谢。