【问题标题】:New version of SwipeRefreshLayout causes wrong draw of views新版 SwipeRefreshLayout 导致视图绘制错误
【发布时间】:2014-12-10 21:44:00
【问题描述】:

我有一个由片段组成的 ViewPager(由 AbstractBrowsePagerAdapter 支持)。每个片段都以 SwipeRefreshLayout 作为根来扩展布局。我最近更新了 support-v4:21.0.0 库。新的 SwipeRefreshLayout 使用圆形进度条而不是线性垂直进度条,如下面的屏幕截图所示。

当我拉动刷新时,向右滑动,在 ViewPager 中创建一个新片段,与我拉动刷新的索引相同,然后转到那个新片段,之前的视图仍然出现在我的新内容之上.

正如您在屏幕截图中看到的,“空目录”文本视图和“圆形进度条”仍然出现在之前被销毁的片段中。

  1. 只有在 SwipeRefreshLayout 处于加载状态(加载器显示在屏幕上)时才会出现这种情况
  2. 以前版本的 SwipeRefreshLayout 不会出现这种情况
  3. 出现错误时,hierarchyviewer 工具不起作用。它以前可以工作,如果我重新启动应用程序就可以工作,但在窃听状态下就不能工作。
  4. 当我使用 DDMS 转储视图时,前一个片段中的视图不会出现。

这似乎是新 SwipeRefreshLayout 中的一个错误,但我找不到任何人有同样的问题,而且似乎没有在 https://code.google.com/p/android/issues/list?can=1&q=SwipeRefreshLayout&colspec=ID+Type+Status+Owner+Summary+Stars&cells=tiles 上报告

我正在寻找一种解决方法,强制删除前一个片段中的视图。

【问题讨论】:

  • swipeRefreshLayout.setRefreshing(false);
  • 不。正确答案如下。

标签: android swiperefreshlayout


【解决方案1】:

我可以通过在 Fragment 的 onPause() 方法上调用 clearAnimation() 来解决这个问题

@Override
public void onPause() {
    swipeLayout.clearAnimation();
    super.onPause();
}

【讨论】:

  • 替换片段时效果很好。但是在 ViewPager 的情况下,片段上的 onPause() 方法不会被调用。
  • 我有一个类似的问题 - stackoverflow.com/questions/30821940/… 。在片段的 onDestroyView 中删除片段视图的所有子视图似乎也“修复”了它,尽管我不知道为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2013-12-06
相关资源
最近更新 更多