android 长按 ListView 无法弹出 ContextMeun

可能的原因:

onItemLongClick 消费了长按事件

  1. mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  2. @Override
  3. public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
  4. mApSelect = position;
  5. Log.d(TAG, "onItemLongClick:" + mApSelect);
  6. return false;
  7. }
  8. });
关键在 onItemLongClick 函数的返回值,看文档注释:
  1. /**
  2. * Callback method to be invoked when an item in this view has been
  3. * clicked and held.
  4. *
  5. * Implementers can call getItemAtPosition(position) if they need to access
  6. * the data associated with the selected item.
  7. *
  8. * @param parent The AbsListView where the click happened
  9. * @param view The view within the AbsListView that was clicked
  10. * @param position The position of the view in the list
  11. * @param id The row id of the item that was clicked
  12. *
  13. * @return true if the callback consumed the long click, false otherwise
  14. */
如果返回 ture,系统认为用户实现的回调函数已经处理完了长按事件。而弹出 ContextMenu 也是长按事件的响应,且在 onItemLongClick 响应之后,所以返回 true 导致 ContextMenu 无法弹出。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。