动态设置ActionBar下拉导航

时间:2013-05-03 09:27:42

标签: android drop-down-menu android-actionbar actionbarsherlock

getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.actionOptions, android.R.layout.simple_dropdown_item_1line);
        Calendar c = Calendar.getInstance();
        int hours = c.get(Calendar.HOUR_OF_DAY);
        if(hours<6)
        {
            getSupportActionBar().setSelectedNavigationItem(1);
            supportInvalidateOptionsMenu();
        }
        else if(hours>=21)
        {
            getSupportActionBar().setSelectedNavigationItem(1);
            supportInvalidateOptionsMenu();
        }
        else
        {
            getSupportActionBar().setSelectedNavigationItem(0);
            supportInvalidateOptionsMenu();
        }

        OnNavigationListener mOnNavigationListener = new OnNavigationListener() {

            @Override
            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                // TODO Auto-generated method stub
                switch(itemPosition){
                case 0:
                    isMode = "dMode";
                    break;
                case 1:
                    isMode = "nMode";
                    break;
                default:
                }
                return false;
            }
        };

getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener);

在下面的代码中,我尝试根据一天中的时间在操作栏中设置下拉列表。如果是从晚上9点到下午6点之间,则设置模式A,否则设置模式B.根据默认定义,模式A设置在索引位置1,模式B设置为2.但代码似乎不起作用。请帮忙。我确实尝试了没有supportInvalidateOptionsMenu()的代码。它根本不起作用。

1 个答案:

答案 0 :(得分:1)

您需要将适配器添加到操作栏。

像这样:

getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter , this);

因此,操作栏知道列表中实际显示的内容。

此外,您还需要将标题设置为false

getSupportActionBar().setDisplayShowTitleEnabled(false);

对于适配器,您应该使用正确的上下文:

Context context = getSupportActionBar().getThemedContext();

因此

 SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(context, R.array.actionOptions, android.R.layout.simple_dropdown_item_1line);