我想创建带有下拉菜单的按钮,例如 ICS 上的 ActionBar 中的溢出菜单按钮。我有问题,因为 android 2.x 中没有 PopupMenu。使用 Spinner 的第二种方式,但它不适合我,因为 Spinner 总是在我的自定义背景或我选择的项目上显示第一个项目。我怎样才能实现它?一般来说,我想要 ContextMenu 但很少和位置点击视图。谢谢。
它看起来像这样:
我想创建带有下拉菜单的按钮,例如 ICS 上的 ActionBar 中的溢出菜单按钮。我有问题,因为 android 2.x 中没有 PopupMenu。使用 Spinner 的第二种方式,但它不适合我,因为 Spinner 总是在我的自定义背景或我选择的项目上显示第一个项目。我怎样才能实现它?一般来说,我想要 ContextMenu 但很少和位置点击视图。谢谢。
它看起来像这样:
如果您的目的是重新创建一个操作栏,您可以查看ActionBarSherlock项目,该项目支持这些功能。
如果您希望能够在应用程序的任何位置弹出这样的菜单,您可以阅读ActionBarSherlock项目源代码中的MenuPopupHelper类实现。
我将PopupWindow用于此类事情。它比 PopupMenu 更有效,您只需给它一个菜单并使用OnMenuItemClickListener.onMenuItemClick()
. 使用 PopupWindow,您可以提供内容视图并在较低级别处理点击。
尽管如此,它还是可以毫不费力地完成工作。该showAsDropDown()
方法允许您根据需要将弹出窗口锚定到另一个视图(将其适当地定位为下拉菜单或弹出菜单)。它从 API 级别 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);
}
让我知道这是否有帮助...