这是我的onActivityCreated()
方法:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onActivityCreated(savedInstanceState);
}
当我给微调器充气并设置适配器时,这是我的onCreateOptionsMenu()
方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
MenuItem menuItem = menu.findItem(R.id.menu_spinner);
mCountrySpinner = (Spinner) MenuItemCompat.getActionView(menuItem);
ArrayAdapter<String> countryAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, mCountryList);
countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mCountrySpinner.setAdapter(countryAdapter);
super.onCreateOptionsMenu(menu, inflater);
}
这是我的菜单xml,其中我添加了该项并将app:actionViewClass
设置为android.widget.Spinner
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.MainActivity">
这是我在菜单xml中充气的项目:
<item
android:id="@+id/menu_spinner"
android:background="#ff00"
android:title="@string/countryname"
app:actionViewClass="android.widget.Spinner"
app:showAsAction="always"></item>
</menu>
答案 0 :(得分:1)
在片段的onCreateView()
中
调用此setHasOptionsMenu(true)
,然后在片段
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.fragment_menu, menu);
MenuItem item = menu.findItem(R.id.spinner);
Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinner_list_item_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
return true;
}
创建一个名为fragment_menu
的菜单xml,并在spinner
中将actionView
设为menuItem
。
答案 1 :(得分:0)
在菜单中创建fragment_menu.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/spinner"
android:title="ActionBar Spinner"
app:actionViewClass="android.widget.Spinner"
android:background="#ff00"
app:showAsAction="always" />
</menu>
覆盖片段的onCreateOptionsMenu方法并添加以下代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.fragment_menu, menu);
MenuItem item = menu.findItem(R.id.spinner);
Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinner_list_item_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
return true;
}
希望这可行。