下拉android时SwipeRefreshLayout加载程序不会上升

2024-01-09

我已经将 SwipeRefreshLayout 与 recyclerview 一起使用,它在所有 android 版本中工作正常,但在 Kitkat 中,当我下拉时,SwipeRefreshLayout 加载程序不会上升,也不会刷新 recyclerview 数据,但在棒棒糖中工作

我正在使用 'com.android.support:support-v4:22.2.1'

Edit 1

SwipeRefreshLayout swipe_refresh;
swipe_refresh = (SwipeRefreshLayout)rootView.findViewById(R.id.swipe_refresh);

swipe_refresh.post(new Runnable() {
            @Override
            public void run() {
                swipe_refresh.setRefreshing(true);
            }
        });


swipe_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                // Loading more data..
                .....
                ....
                getData();

            }
        });

swipe_refresh.setColorSchemeResources(android.R.color.holo_blue_bright,
                android.R.color.holo_green_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_red_light);

public void getData(){
    // Load data from web service...
    ...
    ...
    ...


    // After loading
    swipe_refresh.setRefreshing(false);

    // Set data to adapter
}

布局代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_refresh"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="@color/grey_100">

     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/gv_feeds"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="9"
                android:scrollbars="vertical"/>

            <ProgressBar
            android:id="@+id/prog_load_more"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center_horizontal"
            android:visibility="gone"/>

            </LinearLayout>

        </FrameLayout>

</android.support.v4.widget.SwipeRefreshLayout>

我以前也遇到过同样的问题。当您没有将 RecyclerView 作为 SwipeRefreshLayout 的直接子级时,似乎会发生这种情况。

我们通过使用自定义 SwipeRefreshLayout 解决了这个问题,如下所示:

public class FixedSwipeRefreshLayout extends SwipeRefreshLayout {

    private RecyclerView recyclerView;

    public FixedSwipeRefreshLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FixedSwipeRefreshLayout(Context context) {
        super(context);
    }

    public void setRecyclerView(RecyclerView recyclerView) {
        this.recyclerView = recyclerView;
    }

    @Override
    public boolean canChildScrollUp() {
        if (recyclerView!=null) {
            return recyclerView.canScrollVertically(-1);
        }

        return false;
    }

}

然后,不要使用android.support.v4.widget.SwipeRefreshLayout使用您自己的“com.example.app.FixedSwipeRefreshLayout”,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<com.example.app.FixedSwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_refresh"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
...
</com.example.app.FixedSwipeRefreshLayout>

最后,当您获得 SwipeRefreshLayout 的句柄时,使用您的自定义句柄并设置您的 RecyclerView:

FixedSwipeRefreshLayout swipe_refresh;
swipe_refresh = (FixedSwipeRefreshLayout) rootView.findViewById(R.id.swipe_refresh);
RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.gv_feeds);
swipe_refresh.setRecyclerView(mRecyclerView);

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

下拉android时SwipeRefreshLayout加载程序不会上升 的相关文章

  • Android Paint:如何获得“喷枪”效果?

    我正在关注 API 演示中的 FingerPaint 演示 我需要获得 喷枪 效果 从某种意义上说 当我在同一个点上绘制时 它会变得越来越暗 请看图片 正如你所看到的 中心更暗 因为我不止一次在同一个地方涂上油漆 请问 如果绘制多次 如何获
  • 当字符串位于数组中时,如何替换字符串中的最后一个字符

    如果某个字符串以某个字符结尾arrayOf X Y Z 我想用新字符替换它A 我不知道该怎么做 我尝试过的一切都不起作用 你可以这样做 var test Some string Z if test lastOrNull in arrayOf
  • Android 滚动分页

    Android 操作系统有可以实现滚动分页的功能吗 Edit滚动分页是指像主屏幕上一样的分页 您可以左右滑动并转到下一页或上一页 您可以在 android git kernel org 上查看 Launcher 的源代码作为示例 查找名为
  • 有没有办法有一个屏蔽数字输入字段?

    我正在 Android 上创建一个 HTML5 应用程序 对于这个特定场景 我们有一个用于信用卡安全代码的输入字段 我们希望强制输入字段仅包含数字并被屏蔽 我没有运气搜索这个特定的案例 从我自己研究 尝试中可以看出 这不能纯粹通过 HTML
  • 使用 iOS 分布式应用程序时 Google Cloud Messaging 显示“notRegistered”

    我在 iOS 应用程序上实现了 GCM 服务 我使用 PHP 在服务器上发送 GCM 当应用程序由开发配置文件签名时 它可以完美运行 也就是说 当应用程序使用 GCM 配置注册自身时 它始终返回一个正常运行的设备令牌 我可以使用令牌向设备发
  • Kotlin 数据类中的函数作为参数会导致解析错误

    我有一个 Kotlin 帽子中的数据类正在使用 Parcelize注释以方便分割 问题是我现在想将一个函数传递给此类 但我真的不知道如何使该函数在打包过程中不被考虑 这是我的数据类 Parcelize data class GearCate
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • __stack_chk_fail_local 和 -fno-stack-protector - 如何让它工作?

    Update 我刚刚发现问题出在我的项目 libxml2 中包含的预构建库上 它是在启用堆栈保护的情况下构建的 因此依赖于 stack chk fail local方法 我现在已经重建了该库 fno stack protector也是 一切
  • 如何计算android中位图擦除区域的百分比?

    我是安卓新手 我正在制作一个可以使用手指擦除画布上的位图的应用程序 像手指画橡皮擦之类的东西 我想计算擦除区域的百分比 例如 60 已从完整图像中擦除 请帮助我做到这一点 提前致谢 我尝试了一些方法 它总是给我 0 它不起作用 请参阅该方法
  • 像 Google Play 商店一样在垂直 RecyclerView 中动态不同图像水平 RecyclerView

    我一直在关注这个教程 http android pratap blogspot co za 2015 12 horizo ntal recyclerview in vertical html http android pratap blog
  • Android Studio,工具提示消失得这么快

    我有以下问题 我想从这个工具提示中复制错误文本 但是一旦我将鼠标悬停在它上面 它就消失得如此之快 这让我发疯 我有以下 android studio 版本 我有以下设置 谢谢您的帮助 如果有人遇到这个问题 这与logcat刷新的方式有关 每
  • 没有 GUI 的 Android Activity

    我创建了一个仅从链接启动的活动 使用意图过滤器 我不希望此活动有 GUI 我只希望它启动服务并在栏中放置通知 我尝试将链接的意图过滤器放入我的服务中 但这不起作用 有没有更好的方法可以响应意图过滤器 或者我可以让我的活动没有 GUI 吗 抱
  • Gradle 构建无法解析生成的类

    我刚刚将 Android Studio 从 1 5 更新到 2 2 1 Gradle 也是如此 我有一个项目 它使用注释处理器框架 由我制作 来执行类似 Dagger 的依赖注入 这在更新之前工作得很好 但现在 Gradle 无法解析生成的
  • Android 媒体流错误? java.io.FileNotFoundException:没有内容提供者:http://

    我跟着this https github com Old Geek Radio blob master app src main java org oucho radio MainActivity java在 android 中播放流媒体广
  • 出现软键盘时布局未向上推

    I have designed layout by taking the reference from this https stackoverflow com questions 16411056 how to adjust layout
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 如何使用Multipart将图像上传到php服务器

    我一直很头疼 如何将图像上传到服务器 这对我来说是新任务 但对我来说很困惑 我在 stackoverflow 上搜索并用谷歌搜索 但我遇到了问题 我的意图是从 SD 卡上传照片并从相机拍照并上传到服务器 在ios中 这个任务已经完成 在io
  • 如何创建用于测试的对象的 PagedList?

    我一直在使用 Google 的 arch 库 但是让测试变得困难的一件事是使用PagedList 对于此示例 我使用存储库模式并从 API 或网络返回详细信息 因此 在 ViewModel 中 我调用此接口方法 override fun g
  • 安卓浮动键盘

    是否可以通过编程方式更改键盘的位置 我正在开发一个图腾应用程序 如果键盘停靠在底部 则很难使用 我尝试创建一个扩展 InputMethodService 的自定义键盘 并且我能够更改按键的布局 但我无法更改键盘的视图位置 快捷键 https
  • Android - 从渲染线程内结束活动

    下午好 我不熟悉 android 中的活动生命周期 并且一直在尽可能地阅读 但我不知道如何以良好的方式解决以下问题 我有一个使用 GLSurfaceView 的活动来在屏幕上绘制各种内容 在这个 GLSurfaceView 的渲染线程中 我

随机推荐

  • PropTypes 在 React 中不起作用

    我正在运行 React 16 2 0 并且正在使用 PropTypes 15 6 1 我正在使用 ES6 语法和 Webpack 我试图让 PropTypes 在传递无效道具时发出警告 但它不起作用 这是代码 SimpleMessage j
  • 在 R Shiny 中读取文件

    因此 我正在 R闪亮中构建一个应用程序 要求用户上传 csv 文件 一旦被 R闪亮读入 我不确定如何实际操作该对象来使用 一般代码语法如下 用户界面文件 ui R Define UI for random distribution appl
  • 如何在 64 位 Windows 7 计算机上安装 pycrypto?

    我尝试使用安装 PyCryptopip 但它抱怨需要 vcvarsall bat 我安装了 Visual Studio 2008 但现在我得到了ValueError u path 当我尝试从安装它时pip 我尝试从下载预构建的二进制文件虚空
  • 当我从应用程序中清除数据时,Sqlite 数据库被删除

    我创造了Sqlite应用程序中的数据库 当我清除数据时settings gt applications gt manage applications the Sqlite数据库已删除 任何要保留的建议sqlite数据库原样 当您按下Clea
  • 为什么 IE11 错误地处理 Node.normalize() 的减号?

    我遇到了一个问题 即当使用 Node normalize 函数连接相邻文本节点时 具有某些字符的 DOM 文本节点在 IE 中表现得很奇怪 我创建了一个 Codepen 示例 它允许您在 IE11 中重现该错误 http codepen i
  • 从谷歌应用程序脚本预填写谷歌表单

    我有一份学生登记表 其中有学生证 这是必填字段 我有一个谷歌应用程序脚本函数 可以告诉该学生是否注册了任何课程 有没有办法通过调用 Google Apps 脚本函数 是 或 否 来自动填写注册的现场课程 是的 您可以使用表单 ID 创建预填
  • 有没有办法有条件地应用注释?

    在我的 java play 应用程序中 我有注释 RequiresAuthentication clientName CasClient 在我的控制器内 我只想在生产环境中对用户进行身份验证 如何有条件地应用注释 如果我处理身份验证的方式是
  • 在 as3 中获取对象值的最快方法

    好吧 我发誓这个问题应该无处不在 但事实并非如此 我有一个值对象 里面有很多 getter setter 它不是一个动态类 我迫切需要搜索充满它们的 ArrayCollection 搜索涵盖所有领域 因此我将使用大约 13 种不同类型的 V
  • 测试带有浮点数的元组的断言

    我有一个函数返回一个元组 其中包含一个浮点值 通常我使用assertAlmostEquals比较它们 但这不适用于元组 此外 元组还包含其他数据类型 目前 我正在单独断言元组的每个元素 但这对于此类元组的列表来说太多了 对于这种情况 有什么
  • 如何让 JavaScript 随着时间的推移(而不是立即)写入结果?

    我有一个程序 它会写入很多 if 结果 例如 这个 const a prompt for let i 1 i lt a i console log i 不是实际的代码 因此 当您输入一个大数字时 会有大量答案等待输入控制台 因此 当达到某个
  • Pandas - 如何检查多索引列是否存在

    我的问题类似于如何检查 Pandas 中是否存在列 https stackoverflow com questions 24870306 how to check if a column exists in pandas但对于多索引列的情况
  • 当我尝试首先使用 EF5 代码对数据库进行逆向工程时出现异常

    该视频向我展示了如何从现有数据库使用 Code First http msdn microsoft com en us data jj572367 http msdn microsoft com en us data jj572367 所以
  • 如何从 scala play 访问发布数据?

    我有一条类型为 POST 的路线 我正在将发布数据发送到页面 我如何访问该帖子数据 例如 在 PHP 中您使用 POST 如何访问 scala 和 play 框架中的发布数据 从 Play 2 1 开始 有两种方法获取 POST 参数 1
  • Google 应用程序引擎示例应用程序抛出 503

    我已经设置了 Google 应用引擎的示例 android本教程 https developers google com cloud samples mbs getting started 当我在 EditText 中输入内容并按发送按钮时
  • 手工滚动 SOAP 请求

    我正在尝试构建一个手动 HTTP 请求 以便从我认为相当简单的 SOAP Web 服务调用返回响应 但是 我在正确构建请求时遇到了困难 并且没有得到我期望的响应 适用的wsdl声明 wsdl 目标命名空间 targetNamespace h
  • 如何更改 FullCalendar 中选定日期的背景颜色

    我正在尝试更改日历中所选日期的背景颜色 在我的下面的代码中 它突出显示所有点击的日期 我怎样才能只突出显示最后点击的日期 dayClick function day var mydate new Date this 0 getAttribu
  • 将时间序列中的分类列扩展到多个每秒计数列

    进行以下转变的最佳方式是什么 此转换分为两个部分 第一个是将速度转换为每秒平均值 第二种方法是获取分类列并将其转换为多列 每个分类值一列 其中该值是每秒发生的次数 例如 输入 xts A Time PosixCT Observed Lett
  • 使用 Javascript Regex 将字符换行到字符串中,不包括链接标签

    EDIT 这就是我必须做的 想象一下 如果我有一个文本 里面有一些 html 标签 它仍然是一个字符串 var string p Hello my name is Mauricio p p Hi my name is Patricia p
  • 在程序中替换 if..else if..else 树的最佳方法是什么?

    这个问题是由我最近开始经常看到的事情引起的 if else if else结构 虽然它很简单并且有它的用途 但它的一些东西一遍又一遍地告诉我 它可以被更细粒度 更优雅并且通常更容易保持最新的东西所取代 尽可能具体 这就是我的意思 if i
  • 下拉android时SwipeRefreshLayout加载程序不会上升

    我已经将 SwipeRefreshLayout 与 recyclerview 一起使用 它在所有 android 版本中工作正常 但在 Kitkat 中 当我下拉时 SwipeRefreshLayout 加载程序不会上升 也不会刷新 rec