从操作项自定义下拉(actionbarsherlock)(Custom drop-down from

2019-06-27 15:50发布

我需要连接到一个操作项自定义下拉菜单。 我能够做到的主页图标同样的事情,但似乎,它的工作与其他行动项目完全不同。

我知道这个问题,并回答: 如何添加下拉项操作栏上的我的问题是,我想完全自定义它(我使用自定义字体,还需要图标),这样子菜单是不够的,我想。 并附加一个自定义的SpinneractionLayout长得一点也不像下拉。

对于家庭的图标,它看起来是这样的:

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    ArrayList<NavItem> data = new ArrayList<NavItem>();
    data.add(...);
    data.add(...);
    ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
    actionBar.setListNavigationCallbacks(adapter, new OnNavigationListener() {...});

我可以添加自己的设计,它在不牺牲“下拉”的事情。 如何与其他行动项目办呢?

编辑:我知道使用活动NAVIGATION_MODE_LIST使用Spinner (ListNavigationCallbacks使用SpinnerAdapter ),但它看起来更好,我不知道从哪里得到所有这些样式(如果它只是),使它看起来像。 我的意思是:

- >如何NAVIGATION_MODE_LIST外观:它的包装列表,它的下置图标连接。 - >自定义如何SpinneractionLayout外观:它的屏幕宽度匹配有一些额外的深色背景,取代了行动项目图标(这是很容易改变)和高于一切,变暗屏幕的其余部分。 它看起来很像一个自定义列表,而不是一个下拉菜单中选择一个AlertDialog。

码:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem sortItem = menu.findItem(R.id.sort);
    Spinner spinner = new Spinner(this);

    //this is the same adapter because I didn't want to spend time creating a new one
    //ActionBarNavAdapter extends SpinnerAdapter of course
    ArrayList<NavItem> data = new ArrayList<NavItem>();
    data.add(...);
    data.add(...);
    ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
    spinner.setAdapter(adapter);
    sortItem.setActionView(spinner);
    return true;
}

Answer 1:

尝试更换:

Spinner spinner = new Spinner(this);

有:

Spinner spinner = new Spinner(getActionBar().getThemedContext());

这将使用一个Context主题相匹配的操作栏,并应该帮助。



文章来源: Custom drop-down from action item (actionbarsherlock)