0

この質問 ( Android 2.2 Spinner は Actionbar で古いように見えます) を見つけて試してみましたが、うまくいきません! Sherlock Actionbar で Spinner を作成したいのですが、下位の Android バージョンでは古いように見えます。これは私のコードです:

作成時:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
}

オプションメニューの作成時:

@Override
public boolean onCreateOptionsMenu(Menu menu) {


    MenuInflater mi = getSupportMenuInflater();
    mi.inflate(R.menu.list, menu);

    final Spinner spinner = new Spinner(getSupportActionBar()
    .getThemedContext());


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getSupportActionBar().getThemedContext(),
    R.layout.sherlock_spinner_item, new String[]{"Level 1", "Level 2", "Level 3"});
    adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
        int arg2, long arg3) {
            // clicked

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

    menu.add("Level").setActionView(spinner)
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

    return true;
}
4

1 に答える 1

4

これSpinner は が古く、ActionBarSherlock が の動作に影響を与えないためですSpinner

コードの代わりに を使用するsetNavigationMode(ActionBar.NAVIGATION_MODE_LIST)と、おそらく希望どおりに見えるドロップダウン リストが表示されますが、それはSpinner. むしろ、これはIcsSpinnerActionBarSherlock の内部実装の一部として呼び出されるバックポートです。IcsSpinnerは ActionBarSherlock パブリック API AFAIK の一部ではありませんが、調べてみると、とにかくそれをそのように扱っている人がいることがわかります (Jake Wharton が変更された場合にアプリが壊れるリスクを冒していますIcsSpinner)。

また:

  • setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)、または

  • HoloEverywhere など、ホロをテーマにしたウィジェットのサポートされているバックポートを試すか、

  • ActionBarSherlockIcsSpinnerを独自のコード ベースに引き出して、ActionBarSherlock に加えられた変更とは別にコピーを維持できるようにする、または

  • リスクがあってもActionBarSherlock のものIcsSpinnerを直接使用するか、

  • 古いデバイスで古いルック アンド フィールを使用する、または

  • 古いデバイスのアクション バーでドロップダウン リストを使用しないでください

于 2013-07-11T19:04:08.143 に答える