2

我一直在开发 Android 应用程序,但我对 4+ 版本的 Android 了解不多。因此,请帮助我 - 我制作了带有导航标签的 Android 应用程序:

final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

但我还需要将下拉菜单添加到 ActionBar 以实现其他目标。我可以做吗?如果可能,请给我一个例子。先感谢您。

4

2 回答 2

15

你可以使用一个叫做 android spinner 的东西。它看起来像这样:

在此处输入图像描述

您也可以通过多种方式对其进行自定义以适应您的应用程序设计。

这是谷歌关于如何使用这些的很棒的教程:

http://developer.android.com/guide/topics/ui/controls/spinner.html

如果您想将此添加到操作栏,您可以通过微调器适配器来完成,如下所述:http: //developer.android.com/guide/topics/ui/actionbar.html#Dropdown

如果您想添加图标来执行某些操作,那么您可以看到:http: //developer.android.com/guide/topics/ui/actionbar.html#ActionItems

如果您想在栏本身中执行某些操作(例如在 google 搜索应用程序中搜索),请参阅:http: //developer.android.com/guide/topics/ui/actionbar.html#ActionView

如果要添加导航选项卡,请参阅:http: //developer.android.com/guide/topics/ui/actionbar.html#Tabs

于 2012-10-06T10:56:57.267 回答
3

到目前为止,我找到的绝对是最好和最简单的答案就在这里。

基本上,在这种情况下不需要自定义布局。只需设置actonViewClass:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

  <item android:id="@+id/spinner"
    yourapp:showAsAction="ifRoom"
    yourapp:actionViewClass="android.widget.Spinner" />
</menu>

然后像往常一样在 onCreateOptionsMenu 中处理它:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_layout, menu);
    MenuItem item = menu.findItem(R.id.spinner);
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
    spinner.setAdapter(adapter); // set the adapter to provide layout of rows and content
    s.setOnItemSelectedListener(onItemSelectedListener); // set the listener, to perform actions based on item selection

这是迄今为止最简单和最干净的解决方案。原作者 François POYER 致谢。

于 2015-11-11T05:29:03.980 回答