我正在尝试通过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设计器中显示得很好,这正是我想要的:
但是在我的手机上却没有显示。
我已经看过其他one之类的Stack Overflow帖子,但是我仍然不知道为什么上面的代码不起作用。是否有人对为什么它不显示在我的手机上有任何见解?这只是我手机的问题吗?(LG G4,Android 6.0,SDK 23)
编辑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;
}
它显示为: