我使用 ActionBarSherlock,其中我将导航模式设置为“列表”
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getSupportActionBar().setListNavigationCallbacks(adapter, this);
是否可以根据选择的项目动态显示第二个微调器?
我使用 ActionBarSherlock,其中我将导航模式设置为“列表”
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getSupportActionBar().setListNavigationCallbacks(adapter, this);
是否可以根据选择的项目动态显示第二个微调器?
使用自定义操作栏布局。
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.action_bar_custom);
action_bar_custom.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Spinner
android:id="@+id/action_bar_spinner_collection"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</Spinner>
<Spinner
android:id="@+id/action_bar_spinner_collection_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</Spinner>
</LinearLayout>
使用这个..这可能有效...
代码:
getMenuInflater().inflate( R.menu.main, menu );
mSpinnerItem = menu.findItem( R.id.menu_spinner );
setupSpinner( mSpinnerItem );
菜单 XML:
<item
android:id="@+id/menu_spinner"
android:actionViewClass="android.widget.Spinner"
android:visible="false"
android:showAsAction="always"/>
永远不要使用 NAVIGATION_MODE_LIST 和 onNavigationItemSelected 这是不值得的!
@Override
public boolean onNavigationItemSelected(int position, long itemId)
You also cannot use menu's to do this:
@Override public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
due to inflation ordering.
原因:
(1) 它生成一个“隐藏的”微调器,您无法获得它的 id。 (2) 你不能自定义这个微调器 (3) 节省 30 行代码,但如果要添加第二个双向微调器,则永久受限 (4)即使在“简单代码”(一个微调器)的特殊情况下,你也会失去很多。 (5) 你不能使用标签。 关键是 actionBar.setCustomView(R.layout.action_bar_custom); 和 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()... 对于每个微调器。
相信我,我在尝试每种解决方案时都浪费了几个小时。