如何在特定片段的工具栏中添加微调器。任何人都可以告诉我该怎么做?

时间:2016-08-17 05:50:41

标签: android spinner toolbar

这是我的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>

2 个答案:

答案 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;
}
希望这可行。