0

我有两个ContextMenu相同ActivityFragment

这是onCreateContextMenu我处理它们的地方:

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {

    menu.setHeaderTitle("Available Actions");

    if (v == listView) {

        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
        position = info.position;

        menu.add(2, 1, 1, "Edit");
        menu.add(2, 2, 2, "Delete");
        menu.add(2, 3, 3, "Share");

    }


    if (v == iPP) {

        menu.add(1, 4, 1, "Pick From Gallery");
        menu.add(1, 5, 2, "Capture Picture");
        menu.add(1, 6, 3, "Remove");


    }

    super.onCreateContextMenu(menu, v, menuInfo);

}

当我舔它时listView,它会很好地夸大“编辑、删除、共享”。但是当我点击 iPP 时,它会膨胀所有 6 个选项iPPlistView?

谁能看到发生了什么?

注: iPP是一个ImageView

4

1 回答 1

1

我打电话给两个registerForContextMenu()。一为iPP,一为listView。由于iPP在技术上是 的一部分listView,它在header,我的两个寄存器都在调用。所以我只是按照规则进行测试listView position而不是View类型。

        menu.setHeaderTitle("Available Actions");
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
        position = info.position;
        ListView lv = (ListView) v;
        int firstVisible = lv.getFirstVisiblePosition();
        View rowView = lv.getChildAt(position - firstVisible);

        if (position > 0) {
                    // if NOT in header
                } else {
                    // if Part of Header
                }
于 2013-04-16T22:08:39.443 回答