14

我想创建带有下拉菜单的按钮,例如 ICS 上的 ActionBar 中的溢出菜单按钮。我有问题,因为 android 2.x 中没有 PopupMenu。使用 Spinner 的第二种方式,但它不适合我,因为 Spinner 总是在我的自定义背景或我选择的项目上显示第一个项目。我怎样才能实现它?一般来说,我想要 ContextMenu 但很少和位置点击视图。谢谢。

它看起来像这样: 右上角的溢出菜单

4

3 回答 3

11

如果您的目的是重新创建一个操作栏,您可以查看ActionBarSherlock项目,该项目支持这些功能。

如果您希望能够在应用程序的任何位置弹出这样的菜单,您可以阅读ActionBarSherlock项目源代码中的MenuPopupHelper类实现。

于 2012-07-04T13:23:22.710 回答
3

我将PopupWindow用于此类事情。它比 PopupMenu 更有效,您只需给它一个菜单并使用OnMenuItemClickListener.onMenuItemClick(). 使用 PopupWindow,您可以提供内容视图并在较低级别处理点击。

尽管如此,它还是可以毫不费力地完成工作。该showAsDropDown()方法允许您根据需要将弹出窗口锚定到另一个视图(将其适当地定位为下拉菜单或弹出菜单)。它从 API 级别 1 开始就已经存在,并且在我所有的测试设备上都非常适合我。

于 2012-07-06T05:01:42.067 回答
1

您的要求的替代方法可能是,您创建一个列表视图,将其放置在您的按钮下并将其默认设置为不可见,当您单击按钮时,您可以切换列表视图的可见性....例如

button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (LISTVIEW.isShown()) {
                    LISTVIEW.setVisibility(View.INVISIBLE);
                } else {
                    LISTVIEW.setVisibility(View.VISIBLE);
                }

让我知道这是否有帮助...

于 2012-07-04T07:02:51.287 回答