1

我使用 ActionBarSherlock,其中我将导航模式设置为“列表”

getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getSupportActionBar().setListNavigationCallbacks(adapter, this);

是否可以根据选择的项目动态显示第二个微调器?

4

3 回答 3

1

使用自定义操作栏布局。

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>
于 2013-04-14T20:09:15.590 回答
1

使用这个..这可能有效...

代码:

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"/>
于 2013-10-17T12:34:59.117 回答
0

永远不要使用 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()...
对于每个微调器。

相信我,我在尝试每种解决方案时都浪费了几个小时。

于 2015-08-01T22:42:28.890 回答