【问题标题】:Disable Long Click for Headers (or Footers) in a ListView对 ListView 中的页眉(或页脚)禁用长按
【发布时间】:2011-01-09 07:24:36
【问题描述】:

我的问题和这个类似:ListView: disabling clicking/focus

但是,我不想禁用默认的 onClick,只是长按。我已经为创建上下文菜单注册了我的 ListView,并且我想为标题元素禁用它(或者至少改变它的行为)。我该怎么办?

谢谢!

【问题讨论】:

    标签: android listview onlongclicklistener


    【解决方案1】:

    想通了! menuInfo 不一定是 AdapterContextMenuInfo(有位置)并不明显。

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        if (((AdapterContextMenuInfo)menuInfo).position == 1) {
            inflater.inflate(R.menu.foo1, menu);
            return;
        }
        inflater.inflate(R.menu.foo2, menu);
    }
    

    【讨论】:

      【解决方案2】:

      我还没有尝试过,但它可能会起作用。

      ListView 扩展了 ViewGroup,因此当 ListView 被“长按”时,应该向侦听器传递长按下的子视图。

      创建您自己的实现 onLongClickListener 的 ListView 类,然后检查 View 是您的 Header 还是 Footer,如果是,则返回“true”以显示长按已被“使用”并表明不再需要应该采取行动。

      protected MyListView extends ListView
          implements onLongClickListener {
      
          public boolean onLongClick (View v) {
              boolean longClickConsumed = false;
      
              // Check if v is either your Header or Footer
              // if so then set longClickConsumed to be true
      
              return longClickConsumed;
          }
      }
      

      【讨论】:

        【解决方案3】:

        This 答案几乎是好的,问题是长按没有取消,它只是有替代行为。同样什么也不做也会让用户感到困惑,因为用户界面会表现得好像有一个长按但什么都不会发生。

        解决方法很简单。

        1. 通过使用该功能添加页眉/页脚listView.addFooterView(footer, null, false); 禁用常规单击和长单击
        2. 在页眉/页脚上手动设置点击监听器

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-02
          • 1970-01-01
          • 1970-01-01
          • 2012-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多