当前位置: 首页 > ops >正文

【Android】下拉刷新组件Swiperefreshlayout

效果如下所示:

需要在build.gradle里引入swiperefreshlayout的依赖

    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.swiperefreshlayout.widget.SwipeRefreshLayoutandroid:id="@+id/swipe_refresh_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginBottom="8dp"android:layout_marginLeft="8dp"android:layout_marginRight="8dp"android:layout_marginTop="8dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toBottomOf="parent"app:layout_constraintRight_toRightOf="parent"><TextViewandroid:id="@+id/tv_refresh"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="下拉开始刷新"/></androidx.swiperefreshlayout.widget.SwipeRefreshLayout></androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt

import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayoutclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val swipeRefreshLayout = findViewById<SwipeRefreshLayout>(R.id.swipe_refresh_layout)val tvRefreshText = findViewById<TextView>(R.id.tv_refresh)swipeRefreshLayout.setColorSchemeColors(ContextCompat.getColor(this, R.color.purple_200),ContextCompat.getColor(this, R.color.holo_green_light),ContextCompat.getColor(this, R.color.holo_orange_light),)swipeRefreshLayout.setOnRefreshListener {swipeRefreshLayout.postDelayed({swipeRefreshLayout.isRefreshing = falsetvRefreshText.text = "加载完成"}, 2000)}}
}

SwipeRefreshLayout 是 Android 提供的一个用于实现“下拉刷新”功能的控件,属于 androidx.swiperefreshlayout.widget.SwipeRefreshLayout 包。以下是它常用的 API 和说明。


✅ 常用 API 总结

1. setOnRefreshListener(OnRefreshListener listener)

  • 设置刷新监听器,当用户下拉时触发。

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {@Overridepublic void onRefresh() {// 执行刷新逻辑}
});

2. setRefreshing(boolean refreshing)

  • 设置当前是否处于刷新状态。你可以通过代码触发或停止刷新动画。

swipeRefreshLayout.setRefreshing(true);  // 显示刷新动画
swipeRefreshLayout.setRefreshing(false); // 停止刷新动画

3. isRefreshing()

  • 判断当前是否正在刷新。

if (swipeRefreshLayout.isRefreshing()) {// 说明正在刷新
}

4. setColorSchemeColors(int... colors)

  • 设置刷新动画的颜色(传入颜色值,不是资源 ID)。

swipeRefreshLayout.setColorSchemeColors(ContextCompat.getColor(this, R.color.colorPrimary),ContextCompat.getColor(this, R.color.colorAccent)
);

5. setProgressBackgroundColorSchemeColor(int color)

  • 设置刷新指示器的背景颜色。

swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(this, R.color.white)
);

6. setDistanceToTriggerSync(int distance)

  • 设置触发刷新所需下拉的距离(单位:像素)。

swipeRefreshLayout.setDistanceToTriggerSync(300);

7. setSize(int size)

  • 设置刷新指示器的大小,可选值有:

    • SwipeRefreshLayout.LARGE

    • SwipeRefreshLayout.DEFAULT

swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);

8. setProgressViewOffset(boolean scale, int start, int end)

  • 自定义刷新指示器的位置偏移。

swipeRefreshLayout.setProgressViewOffset(true, 0, 200);

📦 完整导包路径

import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

🔍 官方文档链接

如果你想查看最新官方文档,可以访问:
https://developer.android.com/reference/androidx/swiperefreshlayout/widget/SwipeRefreshLayout


http://www.xdnf.cn/news/5843.html

相关文章:

  • 将 swagger 接口导入 apifox 查看及调试
  • android 权限配置
  • ThingsBoard(TODO)
  • 无人机失联保护模块技术解析!
  • 汽车工厂数字孪生实时监控技术从数据采集到三维驱动实现
  • 【神经网络与深度学习】通俗易懂的介绍非凸优化问题、梯度消失、梯度爆炸、模型的收敛、模型的发散
  • 【AI News | 20250513】每日AI进展
  • 贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现
  • 遨游卫星电话与普通手机有什么区别?
  • 【学习笔记】计算机操作系统(三)—— 处理机调度与死锁
  • 深入探讨 Java 性能术语与优化实践
  • TDengine 做为 Spark 数据源
  • 鸿蒙 PC 发布之后,想在技术上聊聊它的未来可能
  • 【redis】CacheAside的数据不一致性问题
  • 【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区
  • MES管理系统构建智能制造时代下的全面质量管理体系
  • 半小时快速入门Spring AI:使用腾讯云编程助手CodeBuddy 开发简易聊天程序
  • 计算机视觉----时域频域在图像中的意义、傅里叶变换在图像中的应用、卷积核的频域解释
  • CSRF防范歪招
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-5
  • BlockMesh Ai项目 监控节点部署教程
  • 在 Linux 系统中过滤文件中的字符串
  • 尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)
  • supabase 怎么新建项目?
  • STM32H743输出50%的占空比波形
  • DevExpressWinForms-布局容器之SidePanel
  • Java基于SpringBoot的农产品智慧物流系统,附源码+文档说明
  • InfluxDB-数据看板实现流程:从数据采集到可视化展示
  • 图论part09dijkstra算法
  • 黑马Java跟学.最新AI+若依框架项目开发(一)