Android 微调器未出现在菜单栏中
我正试图通过XML在菜单栏中创建一个微调器项。我的代码如下: res/layout/spinner\u filter\u results.xmlAndroid 微调器未出现在菜单栏中,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
<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;
}
它显示为:
您是否已将适配器添加到微调器中,其中包含要显示的项目?-如果没有,它应该保持隐形。哦!不,我没有。微调器根本没有适配器。我不知道它需要一个。我去看看怎么做。非常感谢。是否已将适配器添加到微调器中,其中包含要显示的项目?-如果没有,它应该保持隐形。哦!不,我没有。微调器根本没有适配器。我不知道它需要一个。我去看看怎么做。非常感谢。