1

シャーロックアクションバーの左側にスピナーが欲しいのですが、標準的な動作のために右側に来ています.[添付画像を参照してください。]

修正方法は?

4

1 に答える 1

3

OK、menu.xml にスピナーを手動で追加する代わりに、navigationlist を使用してこれを行いました。

1. リストに必要な項目は、array.xml で次のように定義する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
   
    <string-array name="dashboardItemList">
        <item>Dashboard</item>
        <item>Downloads</item>
        <item>Revenues</item>
        <item>Ads</item>
        <item>Rankings</item>
        <item>Reviews</item>
        <item>Events</item>
    </string-array>
</resources>

2. createMenuOption で navigationList メソッドを呼び出す

@オーバーライド

public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main_menu, menu);
    setNavigationList();
    return super.onCreateOptionsMenu(menu);
}

3. NavigationMethod を定義し、array.xml から文字列配列を取得します。また、NavigationMode の組み込みレイアウト sherlock_spinner_dropdown_item を設定します。

public void setNavigationList() {
              arrayItemsForDropdown = getResources().getStringArray(R.array.dashboardItemList);
              Context context = getSupportActionBar().getThemedContext();
              ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context,R.array.dashboardItemList,              R.layout.sherlock_spinner_item);
              list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
              getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
              getSupportActionBar().setListNavigationCallbacks(list, this);
}

** 4. onNavigationItemSelected メソッドで選択したとおりに実装します **

@Override

public boolean onNavigationItemSelected(int itemPosition, long itemId) {

    if (arrayItemsForDropdown[itemPosition].equals("Dashboard")) {
        downloadIcon.setVisible(false);
        DashboardFragment dashboardFragment = new DashboardFragment();
        showFragment(R.id.fragmentContainer, dashboardFragment, "dashboard");
        overridePendingTransition(R.anim.right_in, R.anim.right_out);

    } else if (arrayItemsForDropdown[itemPosition].equals("Downloads")) {
        Log.d("Spinner", "downloadClicked");
        showProgressDialog();
        new Thread(new Runnable() {
            public void run() {
               checkDownloadsData();
            }
        }).start();
        

    }
              // skipping further else parts.....

    return true;
}

:) そして、ナビゲーションリストはデフォルトで ActionBarSherlock の左に配置されます。スナップショットを確認します。

ここに画像の説明を入力

于 2013-01-17T14:07:21.223 に答える