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()
的代码。它根本不起作用。
答案 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);