LVGL8学习之row and a column layout with flexbox
这一篇来学习一下基于flexbox(柔性盒子)简单行和列布局,还是通过codeblock来模拟代码的运行,可设置layout对象内部的水平和竖直填充,以及布局内各item之间的间隔填充
代码如下:
void lv_flex_layout_test()
{lv_obj_t * container_row1 = lv_obj_create(lv_scr_act()); // 创建一个对象container_row1if (container_row1 == NULL){return;}lv_obj_set_size(container_row1, 500, 75); // 设置对象大小lv_obj_align(container_row1, LV_ALIGN_TOP_MID, 0, 5); // 设置对象基于屏幕中间对齐lv_obj_set_flex_flow(container_row1, LV_FLEX_FLOW_ROW); // 设置对象使用基于行的流失弹性布局flexlv_obj_t * container_row2 = lv_obj_create(lv_scr_act()); // 创建一个对象container_row2if (container_row2 == NULL){return;}lv_obj_set_size(container_row2, 500, 75); // 设置对象大小// 设置对象container_row2基于对象container_row1外部下方中间对齐lv_obj_align_to(container_row2, container_row1, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);lv_obj_set_flex_flow(container_row2, LV_FLEX_FLOW_ROW); // 设置对象使用基于行的流失弹性布局flexlv_obj_set_style_pad_ver(container_row2, 0, 0); // 设置对象内部水平方向的填充为0lv_obj_set_style_pad_row(container_row2, 0, 0); // 设置对象container_row2内部item之间的行间距填充为0lv_obj_set_style_pad_column(container_row2, 1, 0); // 设置对象container_row2内部item之间的列间距填充为1/*Create a container with COLUMN flex direction*/lv_obj_t * container_col1 = lv_obj_create(lv_scr_act());if (container_col1 == NULL){return ;}lv_obj_set_size(container_col1, 100, 250); // 设置对象大小// 设置对象container_col1基于对象container_row2外部下方中间对齐lv_obj_align_to(container_col1, container_row2, LV_ALIGN_OUT_BOTTOM_MID, -100, 20);lv_obj_set_flex_flow(container_col1, LV_FLEX_FLOW_COLUMN); // 设置对象使用基于列的流失弹性布局flexlv_obj_t * container_col2 = lv_obj_create(lv_scr_act());if (container_col2 == NULL){return ;}lv_obj_set_size(container_col2, 100, 250); // 设置对象大小// 设置对象container_col2基于对象container_row2外部下方中间对齐lv_obj_align_to(container_col2, container_row2, LV_ALIGN_OUT_BOTTOM_MID, 100, 20);lv_obj_set_flex_flow(container_col2, LV_FLEX_FLOW_COLUMN); // 设置对象使用基于列的流失弹性布局flexlv_obj_set_style_pad_hor(container_col2, 0, 0); // 设置对象内部垂直方向的填充为0lv_obj_set_style_pad_row(container_col2, 1, 0); // 设置对象container_col2内部item之间的行间距填充为1lv_obj_set_style_pad_column(container_col2, 0, 0); // 设置对象container_col2内部item之间的列间距填充为0int i = 0;lv_obj_t * obj = NULL;lv_obj_t * label = NULL;static lv_style_t btn_style;lv_style_init(&btn_style); // 初始化样式lv_style_set_radius(&btn_style, 0); // 设置样式圆角为0for(i = 0; i < 10; i++){obj = lv_btn_create(container_row1); // 基于container_row1对象添加button对象if (obj != NULL){lv_obj_set_size(obj, 100, LV_PCT(100)); // 设置对象大小label = lv_label_create(obj); // 创建按键对象创建label对象if (label != NULL){lv_label_set_text_fmt(label, "Item: %d", i); // 设置label文本lv_obj_center(label); // label对象居中显示}}}for(i = 0; i < 4; i++){obj= lv_btn_create(container_row2);if (obj != NULL){lv_obj_set_size(obj, 100, LV_PCT(100));lv_obj_add_style(obj, &btn_style, 0);label = lv_label_create(obj);if (label != NULL){lv_label_set_text_fmt(label, "Item: %d", i);lv_obj_center(label);}}}for(i = 0; i < 10; i++){obj = lv_btn_create(container_col1);if (obj != NULL){lv_obj_set_size(obj, LV_PCT(100), LV_SIZE_CONTENT);label = lv_label_create(obj);if (label != NULL){lv_label_set_text_fmt(label, "Item: %d", i);lv_obj_center(label);}}}for(i = 0; i < 4; i++){obj = lv_btn_create(container_col2);if (obj != NULL){lv_obj_set_size(obj, LV_PCT(100), LV_SIZE_CONTENT);lv_obj_add_style(obj, &btn_style, 0);label = lv_label_create(obj);if (label != NULL){lv_label_set_text_fmt(label, "Item: %d", i);lv_obj_center(label);}}}
}
运行效果:
参考文献:CSS flexbox 布局综合指南
LVGL8学习之row and a column layout with flexbox相关推荐
- 关于ResultSet can not re-read row data for column 1 解决方法
今天早上弄完了网站,就去弄Java了,居然遇到了问题"ResultSet can not re-read row data for column 1",上网搜了下,原来是微软公司的 ...
- 数据预处理:原始数据集快速分类的方法,numpy的使用技巧,数据的row=mask的column
问题 假如数据集有3类,怎么把一个庞大的数组集3类,放在不同的数组里. 分析 首先庞大数据集分类,肯定不能一个一个遍历,而且强烈避免个人的操作,需要借助于numpy处理. 示例 数据集,可以看出数据集 ...
- android线性布局快捷键,【整理】Android图形界面知识学习与总结之:Linear Layout线性布局...
[背景] 之前已经学习了: 现在接着去学习: 整理如下: Linear Layout 1.LinearLayout是一个视图组合 2.LinearLayout中的子视图只能已单个方向排列,要么是水平, ...
- CSS three column layout
代码 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- LVGL8学习之Background Styles
这一篇学习一下Background Styles,还是通过codeblock来模拟代码的运行,代码如下: void lv_background_style_test() {static lv_styl ...
- LVGL8学习之Shadow Styles
这一篇来学习一下Shadow Style的使用,还是通过codeblock来模拟代码的运行,代码如下: void lv_shadow_style_test() {static lv_style_t s ...
- LVGL8学习之slider
这一篇学习一下slider对象的使用,还是通过codeblock来模拟代码的运行 可通过lv_slider_set_range设置滑块的变化范围 可通过lv_slider_get_min_value获 ...
- React开发(129):ant design学习指南之form中的layout
- LVGL8学习之multiple styles
这一篇来学一下multiple styles,多种样式的组合使用,还是通过codeblock来模拟代码的运行,代码如下: void lv_multiple_style_test() {static l ...
最新文章
- Java swing是什么?有什么作用?
- python pywin32 微信_python win32con安装_python-2.7 – 安装pywin32
- DRF—Mixin拓展类、视图集
- 设计模式——装饰器模式
- 程序员的数学笔记1--进制转换
- 计算机技能培训工作计划,计算机培训教学计划范文
- ESP8266-Arduino网络编程实例-BME280传感器数据仪表显示
- 微信小程序+PHP实现登录注册(手把手教程)
- python爬取b站番剧链接,Scrapy爬虫爬取B站视频标题及链接
- 使用Seaborn和Pandas进行相关性分析和可视化
- 自定义tab(上面是图片 下面是文字)
- Xshell下载与安装
- 将base64指纹编码输出为指定大小的图片
- 基于SSM或SpringBoot的JavaWeb项目——写作分析系统
- 洗礼灵魂,修炼python(67)--爬虫篇—cookielib之爬取需要账户登录验证的网站
- 2021-10-27【WGS】丨Pacbio三代甲基化修饰流程
- java操作word,自动更新目录/域
- 现60岁,一次性缴纳60万养老金,一个月领取4000元,你愿意吗
- 微信公众平台的运营管理
- 计算机考试前的心情作文,考试前的准备中考优秀作文(精选7篇)