我使用答案here中的第二个选项向我的ActionBar添加了一个微调器。
如何将微调器适配器添加到微调器?我尝试使用Spinner对象,因为Google描述了here,但获得了一个空的Spinner对象。
有人知道怎么做吗?我不希望微调器位于操作栏的导航区域中,而是与其他操作项一起使用(我正在使用拆分操作栏)。
感谢您的帮助!
答案 0 :(得分:29)
我知道这是一个老问题,但万一有人偶然发现它(正如我所做的那样)并且仍在寻找一个完整的答案,这里是如何使用兼容性库来做到这一点,所以它适用于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
,您可以使用旧版Android上不存在的属性showAsAction和actionViewClass。
然后在您的活动代码中:
@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
Etvoilà!
答案 1 :(得分:15)
我知道你放弃了微调器,但是我会给出一些提示,以防其他人遇到同样的问题,或者你在不同的应用程序中开发相同的模式
然后在你做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
快乐的编码......
答案 2 :(得分:6)
好吧,我放弃了Spinner使用子菜单的想法。我意识到旋转器是用来选择保持选择的东西;子菜单接缝是一个更好的UI适合。
答案 3 :(得分:-1)
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