lvgl v8之Styling the scrollbars

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

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_label_create(obj);  // 在obj对象上创建label对象lv_label_set_text(label,"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n""Etiam dictum, tortor vestibulum lacinia laoreet, mi neque consectetur neque, vel mattis odio dolor egestas ligula. \n""Sed vestibulum sapien nulla, id convallis ex porttitor nec. \n""Duis et massa eu libero accumsan faucibus a in arcu. \n""Ut pulvinar odio lorem, vel tempus turpis condimentum quis. Nam consectetur condimentum sem in auctor. \n""Sed nisl augue, venenatis in blandit et, gravida ac tortor. \n""Etiam dapibus elementum suscipit. \n""Proin mollis sollicitudin convallis. \n""Integer dapibus tempus arcu nec viverra. \n""Donec molestie nulla enim, eu interdum velit placerat quis. \n""Donec id efficitur risus, at molestie turpis. \n""Suspendisse vestibulum consectetur nunc ut commodo. \n""Fusce molestie rhoncus nisi sit amet tincidunt. \n""Suspendisse a nunc ut magna ornare volutpat."); // 设置文字内容/*Remove the style of scrollbar to have clean start*/lv_obj_remove_style(obj, NULL, LV_PART_SCROLLBAR | LV_STATE_ANY); /*Create a transition the animate the some properties on state change*/static const lv_style_prop_t props[] = { LV_STYLE_BG_OPA, LV_STYLE_WIDTH, 0 };static lv_style_transition_dsc_t trans;lv_style_transition_dsc_init(&trans, props, lv_anim_path_linear, 200, 0, NULL);  // transition描述初时化/*Create a style for the scrollbars*/static lv_style_t style;  // 定义style静态变量lv_style_init(&style);  // style初时化lv_style_set_width(&style, 4); /*Width of the scrollbar*/lv_style_set_pad_right(&style, 5); /*Space from the parallel side*/lv_style_set_pad_top(&style, 5); /*Space from the perpendicular side*/lv_style_set_radius(&style, 2);   //设置倒角大小lv_style_set_bg_opa(&style, LV_OPA_70); //设置背景透明度lv_style_set_bg_color(&style, lv_palette_main(LV_PALETTE_BLUE)); //设置背景颜色lv_style_set_border_color(&style, lv_palette_darken(LV_PALETTE_BLUE, 3)); //设置边框颜色lv_style_set_border_width(&style, 2); //设置边框宽度lv_style_set_shadow_width(&style, 8); // 设置阴影宽度lv_style_set_shadow_spread(&style, 2); // 设置阴影延伸值lv_style_set_shadow_color(&style, lv_palette_darken(LV_PALETTE_BLUE, 1)); // 设置阴影颜色lv_style_set_transition(&style, &trans); //设置transition的风格/*Make the scrollbars wider and use 100% opacity when scrolled*/static lv_style_t style_scrolled; // 定义滚动静态style变量lv_style_init(&style_scrolled);  //初时化stylelv_style_set_width(&style_scrolled, 8);  //设置style宽度值lv_style_set_bg_opa(&style_scrolled, LV_OPA_COVER); // 设置背景透明度lv_obj_add_style(obj, &style, LV_PART_SCROLLBAR);  //obj对象关联LV_PART_SCROLLBAR style  lv_obj_add_style(obj, &style_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); //obj对象关联滚动LV_PART_SCROLLBAR和LV_STATE_SCROLLED style
}

运行效果图

在这里插入图片描述

修改滚动style_scrolled宽度值

lv_style_set_width(&style_scrolled, 28);

再次运行效果值

在这里插入图片描述


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

相关文章

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

滚动条组件 参考: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 自带的滚动条不太美观,我们来用react-custom-scrollbars插件给它美化一下。 先看一下最终的效果,增加一下信心: 安装 react-custom-scrollbars 不多说了,直接安装插件 npm install react-custom-scrollbars -…

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

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

ScrollView动态更改ScrollbarVisibility属性的Bug

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

学习子网掩码

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

# 子网掩码

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

IP与子网掩码

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

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

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

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

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

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

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

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

网络工作人员经常需要与ip和子网掩码等打交道,相信绝大数的朋友都知道IP的意思,但是还不理解子网掩码的意思,下面装机之家小编来为大家介绍下关于子网掩码的相关知识,希望能够对网络感兴趣的用户有所学习。 什么是子网掩码&#x…

Swift: 实现JSON转Model - HandyJSON

很多时候,我们从服务端请求下的数据都是Json格式,我们需要拿这些数据显示到我们的UI界面。 因此,我们的做法基本都会先将json转为方便使用的数据模型,或者也可以直接转字典解决。 在OC中,我们有很多优秀的第三方库帮助…

项目剖析03-swift 网络请求Moya+HandyJSON+RxSwift

项目第一版网络框架用的是siesta,它的缓存与自动刷新确实很好用而且代码很简洁,但是在文件的上传与下载以及对返回类型需要精确匹配要求这方面就很不友好,所以在第二版的我选择了Moya,它是一个网络抽象层,它在Alamofire基础上提供了一系列的抽…

HandyJSON阅读笔记

2019独角兽企业重金招聘Python工程师标准>>> HandyJSON仓库: https://github.com/alibaba/HandyJSON HandyJSON 花了一天半的时间大概阅读学习了一下阿里巴巴开源的HandyJSON库, 只能说是简单的了解一下, Swift Runtime相关的代码没有深入了解. 但是, 收获还是满满的…

iOS swift Alamofire+HandyJSON网络框架封装

iOS swift AlamofireHandyJSON网络框架封装 我们在学习Objective_C时使用的网络框架是AFNetworkingMJExtension,而在swift中AlamofireHandyJSON取代了它,如果你是第一次学习和尝试封装swift的网络框架,可能会遇到一些坑,但踩过这些…

Swift 类似HandyJSON解析Struct

Swift 类似HandyJSON解析Struct HandyJSON从源码解析Struct获取TargetStructMetadata获取TargetStructDescriptor实现TargetRelativeDirectPointerFieldDescriptor和FieldRecordfieldOffsetVectorOffset计算偏移量 代码的验证 HandyJSON HandyJSON是阿里开发的一个在swift上把…

HandyJSON:Swift语言JSON转Model工具库

背景 JSON是移动端开发常用的应用层数据交换协议。最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本,再把对应数据展现到页面上。 但在编程的时候,处理JSON是一件麻烦事。…

HandyJSON和SwiftyJSON的应用

2019独角兽企业重金招聘Python工程师标准>>> 1. HandyJSON的应用 想要通过HandyJSON实现序列化和反序列化, 必须实现HandyJSON协议, 不需要继承NSObject对象, 实现协议必须实现public init(){} 方法. 序列化和反序列化支持struct和enumerate类型. HandyJSON可支持非…

(时频分析学习)Week01:傅里叶级数,S变换与广义S变换

学习内容:了解了傅里叶变换相关内容,掌握了基本的傅里叶函数的性质、特性和背景。了解S变换和广义S变换的公式和具体含义。 s变换: (在"基准"论文中)意义: 公式: (傅里叶原公式),再有ω2πf 和 f(t)x(t)w(τ-t)进行转换 在另一篇论文中: 广义s变换: 加上了一点关…

解构变换矩阵:如何使变换矩阵分解为位移(T),旋转(R),缩放(S)矩阵

解构变换矩阵 给定一个转换的复合矩阵,关于组成该转换的任何单个转换的信息就会丢失。 我们如果有一个复合矩阵,怎么能使其分解为TRS三个矩阵呢?即如何完成下述变化: 其中M是给定的变换矩阵,T是平移矩阵,R是…