Ответ 1
Ну, я отказался от идеи Spinner для использования подменю. Я понял, что счетчик был для выбора вещей, которые оставались выбранными; подменю закруглено, чтобы лучше подходить к пользовательскому интерфейсу.
Я добавил spinner в свой ActionBar, используя второй вариант из ответа здесь.
Как добавить адаптер прядильщика в прядильщик? Я попытался использовать объект Spinner, поскольку Google описывает здесь, но получает нулевой объект Spinner.
Кто-нибудь знает, как это сделать? Я не хочу, чтобы spinner находился в области навигации на панели действий, но с другими элементами действия (я использую панель действий split).
Спасибо за помощь!
Ну, я отказался от идеи Spinner для использования подменю. Я понял, что счетчик был для выбора вещей, которые оставались выбранными; подменю закруглено, чтобы лучше подходить к пользовательскому интерфейсу.
Я знаю, что это старый вопрос, но на всякий случай кто-то наткнулся на него (как и я) и все еще ищет полный ответ, вот как это сделать, используя библиотеку совместимости, чтобы он работал с v7 (Android 2.1 Eclair) на текущий v19 (Android 4.4 KitKat):
В menu_layout.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/spinner"
yourapp:showAsAction="ifRoom"
yourapp:actionViewClass="android.widget.Spinner" />
</menu>
Использование http://schemas.android.com/apk/res-auto
пространства имен, псевдонимого как yourapp
, позволяет использовать атрибуты showAsAction и actionViewClass, которые не существуют в более старых версиях Android.
Затем в вашем действии:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_layout, menu);
MenuItem item = menu.findItem(R.id.spinner);
Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
spinner.setAdapter(adapter); // set the adapter to provide layout of rows and content
spinner.setOnItemSelectedListener(onItemSelectedListener); // set the listener, to perform actions based on item selection
Et voilà!
Я знаю, что вы удалили spinner, но я дам несколько подсказок здесь, если у других людей есть такая же проблема, или вы приходите к разработке того же шаблона в другом приложении.
то в OnCreateOptionsMenu
вы выполните:
inflater.inflate(R.menu.my_menu, menu); // inflate the menu
Spinner s = (Spinner) menu.findItem(R.id.my_menu_spinner).getActionView(); // find the spinner
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity().getActionBar()
.getThemedContext(), R.array.my_menu_spinner_list, android.R.layout.simple_spinner_dropdown_item); // create the adapter from a StringArray
s.setAdapter(mSpinnerAdapter); // set the adapter
s.setOnItemSelectedListener(myChangeListener); // (optional) reference to a OnItemSelectedListener, that you can use to perform actions based on user selection
счастливое кодирование...
inflater.inflate(R.menu.my_menu, menu); // inflate the menu
Spinner s = (Spinner) menu.findItem(R.id.my_menu_spinner).getActionView(); // find the spinner
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity().getActionBar() .getThemedContext(), R.array.my_menu_spinner_list, android.R.layout.simple_spinner_dropdown_item); // create the adapter from a StringArray
s.setAdapter(mSpinnerAdapter); // set the adapter
s.setOnItemSelectedListener(myChangeListener); // (optional) reference to a OnItemSelectedListener, that you can use to perform actions based on user selection