【问题标题】:Displaying a drop-down PopupWindow when a ListView item is clicked, then scrolling the ListView?单击ListView项目时显示下拉PopupWindow,然后滚动ListView?
【发布时间】:2014-05-07 13:44:54
【问题描述】:

当显示 PopupWindow 并滚动 ListView 时,使锚定项超出窗口,该项的 View 被 Adapter 回收。然后 PopupWindow 开始在屏幕上跳来跳去,因为它不知道原来的锚点在哪里。

有没有解决这个问题的正确方法?

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    理想情况下,我认为显示 PopupWindow 不是正确的解决方案。

    无论如何,如果你已经有了它,列表滚动应该关闭 PopupWindow,因为你已经滚动了列表,所以保持它没有意义。

    【讨论】:

    • 在这种情况下,我希望弹出窗口粘在正确的边框上,如果项目向后滚动,则弹出窗口将重新锚定到它。这是在我的项目视图被回收之前实际发生的情况。
    【解决方案2】:

    一个可能的解决方案如下:

    1. 锚视图的祖父视图是Adapter.getView() 返回的视图。在将PopupWindow 显示为下拉列表后,将标志存储在祖父母的标签中。还存储对此 gandparent 的引用以及所选项目 ID。
    2. Adapter.getView() 中,当请求的项目ID 等于选定的项目ID 时,使用PopupWindow.update() 将弹出窗口附加到新视图。删除旧祖父母的标签并更新祖父母参考。
    3. Adapter.getView() 中,如果您获得带有标记标签的convertView,并且请求的项目ID 与选定的项目ID 不同,请使用PopupWindow.update() 取消附加来自祖父母的弹出窗口。将祖父母设置为null

    这有点复杂,所以我还没有尝试过,但它应该可以工作,我在这里写它以防有人感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      相关资源
      最近更新 更多