我一直在开发 Android 应用程序,但我对 4+ 版本的 Android 了解不多。因此,请帮助我 - 我制作了带有导航标签的 Android 应用程序:
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
但我还需要将下拉菜单添加到 ActionBar 以实现其他目标。我可以做吗?如果可能,请给我一个例子。先感谢您。
我一直在开发 Android 应用程序,但我对 4+ 版本的 Android 了解不多。因此,请帮助我 - 我制作了带有导航标签的 Android 应用程序:
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
但我还需要将下拉菜单添加到 ActionBar 以实现其他目标。我可以做吗?如果可能,请给我一个例子。先感谢您。
你可以使用一个叫做 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
到目前为止,我找到的绝对是最好和最简单的答案就在这里。
基本上,在这种情况下不需要自定义布局。只需设置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 致谢。