插件框架篇一之scrollbars

article/2025/9/11 23:54:00

问题:部分手机(如三星)ListView或GridView设置scrollbars显示时会报错奔溃。

问题分析:
这里写图片描述
ScrollView继承于View,在View的构造器中初始化scrollbars。
这里写图片描述
这里写图片描述
根据initializeScrollbars判断是否需要进行scrollbars初始化,并在initializeScrollbars函数进行初始化。

/*** <p>* Initializes the scrollbars from a given set of styled attributes. This* method should be called by subclasses that need scrollbars and when an* instance of these subclasses is created programmatically rather than* being inflated from XML. This method is automatically called when the XML* is inflated.* </p>** @param a the styled attributes set to initialize the scrollbars from*/
protected void initializeScrollbars(TypedArray a) {initScrollCache();final ScrollabilityCache scrollabilityCache = mScrollCache;if (scrollabilityCache.scrollBar == null) {scrollabilityCache.scrollBar = new ScrollBarDrawable();}final boolean fadeScrollbars = a.getBoolean(R.styleable.View_fadeScrollbars, true);if (!fadeScrollbars) {scrollabilityCache.state = ScrollabilityCache.ON;}scrollabilityCache.fadeScrollBars = fadeScrollbars;scrollabilityCache.scrollBarFadeDuration = a.getInt(R.styleable.View_scrollbarFadeDuration, ViewConfiguration.getScrollBarFadeDuration());scrollabilityCache.scrollBarDefaultDelayBeforeFade = a.getInt(R.styleable.View_scrollbarDefaultDelayBeforeFade,ViewConfiguration.getScrollDefaultDelay());scrollabilityCache.scrollBarSize = a.getDimensionPixelSize(com.android.internal.R.styleable.View_scrollbarSize,ViewConfiguration.get(mContext).getScaledScrollBarSize());Drawable track = a.getDrawable(R.styleable.View_scrollbarTrackHorizontal);scrollabilityCache.scrollBar.setHorizontalTrackDrawable(track);Drawable thumb = a.getDrawable(R.styleable.View_scrollbarThumbHorizontal);if (thumb != null) {scrollabilityCache.scrollBar.setHorizontalThumbDrawable(thumb);}boolean alwaysDraw = a.getBoolean(R.styleable.View_scrollbarAlwaysDrawHorizontalTrack,false);if (alwaysDraw) {scrollabilityCache.scrollBar.setAlwaysDrawHorizontalTrack(true);}track = a.getDrawable(R.styleable.View_scrollbarTrackVertical);scrollabilityCache.scrollBar.setVerticalTrackDrawable(track);thumb = a.getDrawable(R.styleable.View_scrollbarThumbVertical);if (thumb != null) {scrollabilityCache.scrollBar.setVerticalThumbDrawable(thumb);}alwaysDraw = a.getBoolean(R.styleable.View_scrollbarAlwaysDrawVerticalTrack,false);if (alwaysDraw) {scrollabilityCache.scrollBar.setAlwaysDrawVerticalTrack(true);}// Apply layout direction to the new Drawables if neededfinal int layoutDirection = getLayoutDirection();if (track != null) {track.setLayoutDirection(layoutDirection);}if (thumb != null) {thumb.setLayoutDirection(layoutDirection);}// Re-apply user/background padding so that scrollbar(s) get addedresolvePadding();
}

在initializeScrollbars方法中有scrollbarThumbHorizontal、scrollbarAlwaysDrawHorizontalTrack、scrollbarTrackVertical、scrollbarThumbVertical四个Drawable属性的赋值。
在部分手机(如三星)系统定制过Drawable的默认值,并修改过默认资源路径,导致插件环境下无法找到相应资源报错。

解决方案:
自定义scrollbars,修改scrollbarThumbHorizontal、scrollbarAlwaysDrawHorizontalTrack、scrollbarTrackVertical、scrollbarThumbVertical属性。
1、定义scrollbars的style,并自定义scrollbarThumbHorizontal、scrollbarAlwaysDrawHorizontalTrack、scrollbarTrackVertical、scrollbarThumbVertical四个属性(一个不能漏);
这里写图片描述
2、ListView添加style;
这里写图片描述


http://chatgpt.dhexx.cn/article/jSIkN9LU.shtml

相关文章

VBA,窗体和控件的动态效果之一:scrollbar如何实现自动效果

问题由来&#xff1a;静态和瞬时的效果不够用&#xff0c;窗体的动态效果更难实现 之前只学习了窗体的静态效果现在考虑 窗体和控件的动态效果 1 srcollbar如何实现自动效果 给 Button 2 绑定了这样一个sub点击后&#xff0c;Scroll Bar 1 可以自动变化注意点&#xff1a;因为…

C#开发串口小助手(可更改波特率、串口号,可实现数据以及字符的收发)

0. 前言 前置项目为&#xff1a;VS 2019中利用C#语言在.Net Framework 4.5框架上开发简易串口发送数据软件本项目的全部代码已经放置至码云&#xff1a;https://gitee.com/jiawei_zh/serial_assistant本项目参考杜洋工作室&#xff1a;入门C#设计。 1. 项目实现 1.1 配置For…

android RecyclerView 添加可拖动的滚动条

实现的效果图如下&#xff0c;为了效果这里我设置的宽了一些&#xff0c;实际根据需求修改即可 先说几个属性&#xff1a; android:scrollbars" 一般都是垂直的滚动条设置vertical android:scrollbarSize 设置滚动条的宽度 android:scrollbarThumbVertical&#xff1a;…

基于机智云的Android开源app修改教程

前言 首先&#xff0c;这是我最近搞的毕业设计&#xff0c;然后为了使自己的app更加的有个人风格&#xff0c;故在网上寻找了很多的参考资料&#xff0c;这里是对自己设计的总结&#xff0c;具体机智云APP生成流程请参考我上一篇博客。链接: 基于stm32的连接机智云教程 机智云…

Android中修改ScrollBar默认样式

好吧&#xff0c;又遇到需求了&#xff0c;需要修改ScrollBar的样式&#xff0c;于是查阅了很多文档&#xff0c;觉得这位大牛总结的不错&#xff0c;顺便看了下他的主页&#xff0c;哇哦&#xff0c;大神啊~&#xff01;&#xff01;&#xff01;附上大神文章的链接&#xff1…

RecyclerView实现可拖动滚动条并修改宽度

本文参考了孤调的文章,链接如下: https://www.jianshu.com/p/67e1df2b1920 基本实现了拖动的需求,但是还有一个问题就是滚动条的宽度跟需求不符,需要进行修改.但是官方并未提供相应的参数.自己动手丰衣足食,开始撸源码. 打开RecyclerView类,搜索fastScrollEnabled,定位到构造方…

IDEA修改配置

1.修改 bin/idea.properties---------------主要是把路径放开 # Use ${idea.home.path} macro to specify location relative to IDE installation home. # Use ${xxx} where xxx is any Java property (including defined in previous lines of this file) to refer to its v…

利用ajax修改删除页面数据,使用Jquery的Ajax实现无刷新更新,修改,删除页面

本文将向大家讲述一下最近工作的一些总结&#xff0c;主要包括了以下内容&#xff0c;注册界面以及详细信息界面的编辑。主要是介绍了AJAX技术&#xff0c;因为我觉得其他方面没什么好介绍的。首先是跟大家说一下Ajax的优点&#xff0c;假如你删除了一个页面的内容&#xff0c;…

代码修改RecyclerView的scrollbar颜色

因为scrollbar是view的私有内部类&#xff0c;所以需要动态修改RecyclerView的scrollbar颜色&#xff0c; 只能通过反射获取scrollbar的drawable&#xff0c;然后用反射着色&#xff0c;亲测可用&#xff0c;代码直接粘贴就可使用。 import android.content.Context; import an…

lvgl v8之Styling the scrollbars

Styling the scrollbars /** * Styling the scrollbars */ static void lv_example_scroll_4(void) {lv_obj_t* obj lv_obj_create(lv_scr_act()); // 创建obj对象lv_obj_set_size(obj, 200, 100); // 设置大小lv_obj_center(obj); // 居中显示lv_obj_t* label lv_…

react-custom-scrollbars 滚动条组件的简单实现

滚动条组件 参考&#xff1a;gitHub API说明以及大佬的API中文讲解 import "./styles.css"; import React, { useState, useEffect, useRef, useMemo } from "react"; import { Scrollbars } from "react-custom-scrollbars";export default fu…

用react-custom-scrollbars插件美化 Ant Design Table 滚动条

Ant Design Table 自带的滚动条不太美观&#xff0c;我们来用react-custom-scrollbars插件给它美化一下。 先看一下最终的效果&#xff0c;增加一下信心&#xff1a; 安装 react-custom-scrollbars 不多说了&#xff0c;直接安装插件 npm install react-custom-scrollbars -…

说说react-custom-scrollbars插件在react hooks版本中的使用

react-custom-scrollbars插件 读前说明基本使用属性介绍onScrollrenderViewrenderThumbVerticalautoHideautoHideTimeout 读前说明 github地址&#xff1a;https://github.com/malte-wessel/react-custom-scrollbars 作用&#xff1a; 快速实现被包裹区域的滚动效果 关于本…

ScrollView动态更改ScrollbarVisibility属性的Bug

原因&#xff1a; 启动之后发现效果并非预设的那样&#xff0c;原因是因为设置成Permanent后,Viewport的rectTranform发生了变化&#xff0c;导致不会像预设那样实现效果 结论&#xff1a; 最好不要动态更改ScrollbarVisibility&#xff0c;若一定要更改则还要额外写死Viewport…

学习子网掩码

一.子网掩码 1.含义 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩&#xff0c;它用来指明一个IP地址的哪些位标识的是主机所在的子网&#xff0c;以及哪些位标识的是主机的位掩码。子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。 子网掩码是一个3…

# 子网掩码

子网掩码 1、概念简介   子网掩码又叫网络掩码、地址掩码&#xff0c;是一个32位地址&#xff0c;用于屏蔽IP地址的一部分以区别网络号和主机号&#xff0c;并说明该IP地址是在局域网上&#xff0c;还是在远程网上。子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使…

IP与子网掩码

目录 一.IP 1.IP地址 2.IP地址的分类 二.子网掩码 1.子网掩码由32个二进制位表示 2.IP地址和子网掩码作“逻辑与”运算得到网络地址 3.网络中不同主机之间通信 4.A、B、C三类地址的默认子网掩码 5.子网划分的原因 6.子网划分的原理 7.子网掩码及相关参数对应表 8.I…

计算机子网掩码作用,什么是子网掩码?子网掩码的作用是什么?

网络工作人员经常需要处理ip和子网掩码等. 我相信大多数朋友都知道IP的含义&#xff0c;但仍然不了解子网掩码的含义. 希望在了解子网掩码的相关知识的基础上&#xff0c;希望对网络感兴趣的用户能学到一些东西. 什么是子网掩码&#xff1f; 子网掩码也称为网络掩码&#xff0c…

将子网掩码取反_子网掩码

1 基本介绍 子网掩码(subnet mask)是每个使用互联网的人必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。以下我们就来深入浅出地讲解什么是子网掩码。 子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0…

计算机子网掩码在线,子网掩码计算器

华军软件园提供的这款子网掩码计算器可以很方便的计算子网掩码,它包含了五款经典的子网掩码计算工具,您可以自由选择,网管必备!子网掩码计算器可以自动划分A、B、C类IP,可以输出划分后的子网掩码、子网位、最多子网数、主机位、最多主机数以及所有的子网列表,并可以将结果…