上下文菜单问题

时间:2013-09-24 13:21:11

标签: android

我设置了一个上下文菜单,以便在我点击ListView中的项目

时短按
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    menu.setHeaderTitle("Pick an action");
    theView = v;
    TextView desc = (TextView) theView.findViewById(R.id.class_description);
    String description = (String) desc.getText();
    TextView id = (TextView) v.findViewById(R.id.class_id);
    Integer ID = Integer.valueOf(String.valueOf(id.getText()));
    menu.add(1, ID, 0, getString(R.string.add_to_calender));
    menu.add(2, ID, 0, getString(R.string.subscribe_alterations));
    assert description != null;
    if (!description.equals("")) {
        menu.add(3, ID, 0, getString(R.string.view_description));
    }
    menu.add(4, ID, 0, getString(R.string.view_alterations));
}

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

        Toast.makeText(getSherlockActivity(), "Clicked", Toast.LENGTH_SHORT).show();
        registerForContextMenu(view);
        view.setLongClickable(false);
        getSherlockActivity().openContextMenu(view);
     }
});

在我的listview适配器中,我有这条线切换按钮的可见性

holder.alter.setVisibility(View.VISIBLE);
if ((position % 2) == 0) {
    holder.alter.setVisibility(View.INVISIBLE);
}

这是按钮

<Button
    android:layout_width="20dp"
    android:layout_height="wrap_content"

    android:background="@drawable/alterations_btn"
    android:textColor="@color/white"
    android:layout_alignParentLeft="true"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textStyle="bold"
    android:layout_marginRight="@dimen/padding_small"

    android:id="@+id/is_alt"
    android:layout_centerInParent="true"
    android:text="@string/exclamation_point"/>

当按钮不可见时,上下文菜单可以正常工作,但是当它可见时,它不起作用。

谁能明白为什么?

1 个答案:

答案 0 :(得分:1)

您应该记住的第一件事是,只要ListView元素中有可点击元素(如按钮或链接),它们就会控制点击事件。所以你的ListView将无法接受点击事件。

您可以做的是,为ListView中的Button设置focusable属性为false,看看是否有帮助。