用于预蜂窝的PopupMenu的适当替代品

时间:2012-03-26 20:01:33

标签: android

我已经为按下ActionBar上的项目后显示的菜单实施了PopupMenu。我想知道11之前的SDK版本有哪些替代方案?

可能使用类似上下文菜单的内容。你有什么想法?

我当前的实现是使用菜单项加载一个新的Activity。

2 个答案:

答案 0 :(得分:13)

正如@sastraxi建议的那样,一个好的解决方案是使用AlertDialogCHOICE_MODE_SINGLE

AlertDialog.Builder builder = new AlertDialog.Builder(MyAndroidAppActivity.this);
builder.setTitle("Pick color");
builder.setItems(R.array.colors, new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
           // The 'which' argument contains the index position
           // of the selected item
       }
});
builder.setInverseBackgroundForced(true);
builder.create();
builder.show();

和strings.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="colors">
        <item >blue</item>
        <item >white</item>
    </string-array>
</resources>

参考:Adding a List

答案 1 :(得分:7)

或者,您可以使用floating context menu


(3年后,实际上读取浮动上下文菜单仅适用于长时间点击并匆忙编辑回答)。

您需要为上下文菜单注册视图,打开菜单,然后取消注册(以便长按操作项不再触发它):

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.my_menu_item) {
        View view = item.getActionView();
        registerForContextMenu(view);
        openContextMenu(view);
        unregisterForContextMenu(view);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

当然,根据链接的文档实现onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)

如OP所写,如果你想要一个居中的对话框,那么更好的选择就是在这种特殊情况下使用AlertDialog;如果你想将菜单锚定到操作项,那么选择PopupMenu。弹出菜单可能很奇怪,因为它会感觉像是溢出菜单。