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);
}

Oncreateoptions 菜单:

@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. 相反,这是一个名为的 backport IcsSpinner,它是 ActionBarSherlock 内部实现的一部分。IcsSpinner不是 ActionBarSherlock 公共 API AFAIK 的一部分,但如果您四处逛逛,您会发现有些人无论如何都会这样对待它(如果 Jake Wharton 发生变化,他们的应用程序将面临崩溃的风险IcsSpinner)。

任何一个:

  • 使用setNavigationMode(ActionBar.NAVIGATION_MODE_LIST), 或

  • 尝试支持的全息主题小部件的反向移植,例如 HoloEverywhere,或

  • 将 ActionBarSherlock 提取IcsSpinner到您自己的代码库中,这样您就可以独立于对 ActionBarSherlock 所做的更改来维护您的副本,或者

  • 直接使用 ActionBarSherlock 自己的IcsSpinner,尽管有风险,或者

  • 在旧设备上使用旧的外观和感觉,或

  • 不要在旧设备的操作栏中使用下拉列表

于 2013-07-11T19:04:08.143 回答