记录跟随recyclerview滑动的指示器

老早之前做的一个功能,横向recyclerview滑动时,底部做跟随滑动指示器。今天代码不用了,记录下代码。

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="@dimen/fourteen"android:orientation="vertical"android:paddingLeft="@dimen/sixteen"android:paddingRight="@dimen/sixteen"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rv_teacher"android:layout_width="match_parent"android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView><RelativeLayoutandroid:id="@+id/scroll_bar_bg"android:layout_width="30dp"android:layout_height="4dp"android:layout_gravity="center"android:layout_marginTop="@dimen/six"android:background="@drawable/bg_fast_view"><Viewandroid:id="@+id/scroll_bar"android:layout_width="20dp"android:layout_height="4dp"android:layout_centerVertical="true"android:background="@drawable/bg_scroll_bar" /></RelativeLayout></LinearLayout>

bg_fast_view

<shape xmlns:android="http://schemas.android.com/apk/res/android"><solidandroid:color="@color/Gray"/><cornersandroid:radius="@dimen/ten"/></shape>

bg_scroll_bar

<shape xmlns:android="http://schemas.android.com/apk/res/android"><solidandroid:color="@color/title_bg"/><cornersandroid:radius="@dimen/ten"/></shape>
RelativeLayout scrollBarBg = view.findViewById(R.id.parent_layout);
View scrollBar = view.findViewById(R.id.main_line);GridLayoutManager layoutManager = new GridLayoutManager(mContext, 2);layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);rvTeacher.setLayoutManager(layoutManager);teacherAdapter = new RecommendTeacherRVAdapter(mContext);rvTeacher.setAdapter(teacherAdapter);rvTeacher.addOnScrollListener(new RecyclerView.OnScrollListener() {public int range = 0;@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);//整体的总宽度,注意是整体,包括在显示区域之外的。int temp = recyclerView.computeHorizontalScrollRange();if (temp > range) {range = temp;}int offset = recyclerView.computeHorizontalScrollOffset();int extent = recyclerView.computeHorizontalScrollExtent();float proportion = (float) (offset * 1.0 / (range - extent));//计算滚动条宽度float transMaxRange = scrollBarBg.getWidth() - scrollBar.getWidth();//设置滚动条移动scrollBar.setTranslationX(transMaxRange * proportion);}});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88618.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速过一遍Python基础语法

前言 本文章是深度学习的前导课&#xff0c;对有编程基础的小伙伴更加的友好&#xff08;C、C&#xff09;&#xff0c;如果完全没有学过任何一门编程语言也没有关系&#xff0c;本文章不会涉及到晦涩难懂的原理&#xff0c;只是简单的带大家过一遍Python的基础语法。 下面的操…

[爬虫实战] 多进程/多线程/协程-异步爬取豆瓣Top250

相关爬虫知识点&#xff1a;[爬虫知识] 深入理解多进程/多线程/协程的异步逻辑 相关爬虫专栏&#xff1a;JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 逆向知识点合集 前言&#xff1a; 在之前文章中&#xff0c;我们深入探讨了多进程、多线程和协程这三大异步技术的工作…

Git系列--1.初始Git

一、背景 目录 一、背景 二、认识 三、如何在Linux上安装Git 3.1检测git是否存在和版本 3.2安装和卸载git 3.2.1Centos 3.2.2Ubuntu 四、基本操作 4.1创建本地仓库 4.2必须的配置项 4.3宏观认识基本分区 我们会根据需求不断更改我们的文件内容&#xff0c;但有时我们会…

QWidget的属性

QWidget的属性 windowOpacityAPI说明windowOpacity()获取不透明数值&#xff0c;返回float&#xff0c;取值为0.0到1.0&#xff0c;其中0.0为全透明&#xff0c;1.0为完全不透明setWindowOpacity()设置控件的不透明数值注意点&#xff1a;窗口不透明度的变化并非精确的&#xf…

【PTA数据结构 | C语言版】后缀表达式求值

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 请编写程序&#xff0c;求给定的后缀表达式的值。 输入格式&#xff1a; 输入在一行中给出一个非空后缀表达式&#xff0c;其中操作数为 int 型整数&#xff0c;操作符包括加、减、乘、除、取模。各…

装配式建筑4.0:当房子像汽车一样被“智造”

传统建筑方式&#xff0c;如同手工打造艺术品一般&#xff0c;大部分工作依赖现场施工&#xff0c;工人在建筑工地进行混凝土浇筑、砖块堆砌、钢筋绑扎等繁杂工作。这种方式受天气、工人技术水平等因素影响极大&#xff0c;不仅施工周期漫长&#xff0c;质量也参差不齐。据统计…

Go语言生态成熟度分析:为何Go还无法像Java那样实现注解式框架?

近年来&#xff0c;Go语言因其性能高效、部署简单、并发模型优秀等特性&#xff0c;成为云原生与微服务架构中的热门语言。然而&#xff0c;在实际的企业级项目开发中&#xff0c;开发者普遍会发现一个现象&#xff1a;Go的开发效率&#xff0c;尤其在快速构建中大型业务系统时…

oc分类和swift扩展有哪些区别

目录1. 语言环境2. 主要目的3. 核心能力对比4. 关键差异详解4.1. 属性支持4.2. Swift 扩展4.3. 初始化器4.4. 方法冲突与覆盖4.5. 关联类型与泛型5. 设计哲学6. 总结表在 Objective-C 和 Swift 中&#xff0c;分类&#xff08;Category&#xff09;和扩展&#xff08;Extension…

go.work

一般学习一个小东西时&#xff0c;无非两点&#xff0c;1、怎么用&#xff1f; 2、为啥用&#xff1f;在写一个小的项目demo时&#xff0c;忽然看到一个奇怪的东西“go.work”&#xff1f;这是啥&#xff1f;好奇&#x1f62f;&#xff0c;想知道。我是这么问AI的&#xff1a;g…

Kimi K2万亿参数开源模型原理介绍

Kimi K2 技术全解&#xff1a;1T MoE 大模型如何炼成开放智能体 文章目录Kimi K2 技术全解&#xff1a;1T MoE 大模型如何炼成开放智能体1. 模型架构与特点&#xff1a;1 T MoE 的「大」与「省」2. 主要创新点&#xff1a;MuonClip、Agentic RL 与工具调用2.1 MuonClip 优化器&…

【CMake】CMake构建项目入门

一、CMake介绍 CMake 是一个跨平台的自动化构建工具&#xff0c;用于管理软件项目的编译过程。它通过简单的配置文件&#xff08;CMakeLists.txt&#xff09;生成特定平台的构建文件&#xff08;如 Makefile、Visual Studio 项目&#xff09;&#xff0c;让开发者可以专注于代…

贪心算法题解——划分字母区间【LeetCode】

763. 划分字母区间 本题目&#xff0c;“同一字母最多出现在一个片段中”&#xff0c;因为这句话&#xff0c;所以本质上 这道题目属于合并区间 一、算法逻辑&#xff08;逐步思路&#xff09; ✅ 目标&#xff1a; 将字符串 s 划分成尽可能多的片段&#xff0c;要求&#xf…

Python----目标检测(使用YOLOV8网络训练人脸)

一、Ultralytics安装 网址&#xff1a;主页 -Ultralytics YOLO 文档 Ultralytics提供了各种安装方法&#xff0c;包括pip、conda和Docker。通过 ultralytics pip包安装最新稳定版本的YOLOv8&#xff0c;或克隆Ultralytics GitHub 存储库以获取最新版本。可以使用Docker在隔离的…

Filament引擎(三) ——引擎渲染流程

通过Filament引擎(二) ——引擎的调用及接口层核心对象的介绍我们知道&#xff0c;要在项目中使用filament&#xff0c;首先我们需要构建出filament的Engine的对象&#xff0c;然后通过filament::Engine对象实例&#xff0c;来构建其他对象&#xff0c;组装渲染场景&#xff0c…

Oracle存储过程导出数据到Excel:全面实现方案详解

技术背景与需求分析 数据导出是企业级应用的核心功能,Oracle存储过程因其高性能执行(减少网络传输)、代码复用性(封装业务逻辑)和事务安全性(ACID保障)成为理想载体。Excel作为使用率$ \geq 95% $的办公工具,其兼容性需求尤为突出。典型场景包括: 财务报表自动生成物…

解决el-table右下角被挡住部分

一部分展示不全&#xff0c;被遮挡&#xff0c;因为 最右边加了fixed"right"<el-table-column fixed"right" label"操作" width"120">解决&#xff1a;1、去除fixed"right"或2、设置样式单页面<style lang"sc…

Waiting for server response 和 Content Download

在浏览器网络调试&#xff08;如 Chrome DevTools 的 Network 面板&#xff09;中&#xff0c;Timing 选项卡下的 Waiting for server response 和 Content Download 是两个关键性能指标&#xff0c;它们分别代表了 HTTP 请求生命周期的不同阶段。以下是详细解释和优化方案&…

《Java Web程序设计》实验报告五 Java Script学习汇报

目 录 一、实验目的 二、实验环境 三、实验步骤和内容 1、小组成员分工&#xff08;共计4人&#xff09; 2、实验方案 3、实验结果与分析 Ⅰ、简述JavaScript的产生过程与Java的关系 Ⅱ、简述JavaScript的特点有哪些 Ⅲ、简述ECMAScript的历史 Ⅳ、简述ECMAScript与J…

C#与FX5U进行Socket通信

实现效果实现步骤&#xff1a;注意&#xff1a;详细的参数这里就不说明了&#xff0c;自己网上搜即可&#xff1b;打开GX Works3 创建FX5U项目系统参数设置PLC的具体型号&#xff08;我有实物PLC&#xff09;设置IP及组态参数添加通讯设备&#xff08;这里PLC做客户端&#xff…

ubuntu20.04基于tensorRT和c++跑yolo11

设备 系统&#xff1a;Ubuntu 20.04 显卡&#xff1a;NVIDIA GeForce RTX 3050 显卡驱动&#xff1a; Driver Version: 535.183.01 CUDA Version: 12.2 关键软件版本总结 Cmake: 3.28.6 Cuda&#xff1a; 12.2.2 Cudnn: 8.9.7 TensorRT: 10.8.0.43 Python&#xff1a;3.10.1…