【发布时间】:2014-05-07 13:44:54
【问题描述】:
当显示 PopupWindow 并滚动 ListView 时,使锚定项超出窗口,该项的 View 被 Adapter 回收。然后 PopupWindow 开始在屏幕上跳来跳去,因为它不知道原来的锚点在哪里。
有没有解决这个问题的正确方法?
【问题讨论】:
当显示 PopupWindow 并滚动 ListView 时,使锚定项超出窗口,该项的 View 被 Adapter 回收。然后 PopupWindow 开始在屏幕上跳来跳去,因为它不知道原来的锚点在哪里。
有没有解决这个问题的正确方法?
【问题讨论】:
理想情况下,我认为显示 PopupWindow 不是正确的解决方案。
无论如何,如果你已经有了它,列表滚动应该关闭 PopupWindow,因为你已经滚动了列表,所以保持它没有意义。
【讨论】:
一个可能的解决方案如下:
Adapter.getView() 返回的视图。在将PopupWindow 显示为下拉列表后,将标志存储在祖父母的标签中。还存储对此 gandparent 的引用以及所选项目 ID。Adapter.getView() 中,当请求的项目ID 等于选定的项目ID 时,使用PopupWindow.update() 将弹出窗口附加到新视图。删除旧祖父母的标签并更新祖父母参考。Adapter.getView() 中,如果您获得带有标记标签的convertView,并且请求的项目ID 与选定的项目ID 不同,请使用PopupWindow.update() 取消附加来自祖父母的弹出窗口。将祖父母设置为null。这有点复杂,所以我还没有尝试过,但它应该可以工作,我在这里写它以防有人感兴趣。
【讨论】: