这一篇来学习一下基于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相关推荐

  1. 关于ResultSet can not re-read row data for column 1 解决方法

    今天早上弄完了网站,就去弄Java了,居然遇到了问题"ResultSet can not re-read row data for column 1",上网搜了下,原来是微软公司的 ...

  2. 数据预处理:原始数据集快速分类的方法,numpy的使用技巧,数据的row=mask的column

    问题 假如数据集有3类,怎么把一个庞大的数组集3类,放在不同的数组里. 分析 首先庞大数据集分类,肯定不能一个一个遍历,而且强烈避免个人的操作,需要借助于numpy处理. 示例 数据集,可以看出数据集 ...

  3. android线性布局快捷键,【整理】Android图形界面知识学习与总结之:Linear Layout线性布局...

    [背景] 之前已经学习了: 现在接着去学习: 整理如下: Linear Layout 1.LinearLayout是一个视图组合 2.LinearLayout中的子视图只能已单个方向排列,要么是水平, ...

  4. CSS three column layout

    代码  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  5. LVGL8学习之Background Styles

    这一篇学习一下Background Styles,还是通过codeblock来模拟代码的运行,代码如下: void lv_background_style_test() {static lv_styl ...

  6. LVGL8学习之Shadow Styles

    这一篇来学习一下Shadow Style的使用,还是通过codeblock来模拟代码的运行,代码如下: void lv_shadow_style_test() {static lv_style_t s ...

  7. LVGL8学习之slider

    这一篇学习一下slider对象的使用,还是通过codeblock来模拟代码的运行 可通过lv_slider_set_range设置滑块的变化范围 可通过lv_slider_get_min_value获 ...

  8. React开发(129):ant design学习指南之form中的layout

  9. LVGL8学习之multiple styles

    这一篇来学一下multiple styles,多种样式的组合使用,还是通过codeblock来模拟代码的运行,代码如下: void lv_multiple_style_test() {static l ...

最新文章

  1. Java swing是什么?有什么作用?
  2. python pywin32 微信_python win32con安装_python-2.7 – 安装pywin32
  3. DRF—Mixin拓展类、视图集
  4. 设计模式——装饰器模式
  5. 程序员的数学笔记1--进制转换
  6. 计算机技能培训工作计划,计算机培训教学计划范文
  7. ESP8266-Arduino网络编程实例-BME280传感器数据仪表显示
  8. 微信小程序+PHP实现登录注册(手把手教程)
  9. python爬取b站番剧链接,Scrapy爬虫爬取B站视频标题及链接
  10. 使用Seaborn和Pandas进行相关性分析和可视化
  11. 自定义tab(上面是图片 下面是文字)
  12. Xshell下载与安装
  13. 将base64指纹编码输出为指定大小的图片
  14. 基于SSM或SpringBoot的JavaWeb项目——写作分析系统
  15. 洗礼灵魂,修炼python(67)--爬虫篇—cookielib之爬取需要账户登录验证的网站
  16. 2021-10-27【WGS】丨Pacbio三代甲基化修饰流程
  17. java操作word,自动更新目录/域
  18. 现60岁,一次性缴纳60万养老金,一个月领取4000元,你愿意吗
  19. 微信公众平台的运营管理
  20. 计算机考试前的心情作文,考试前的准备中考优秀作文(精选7篇)

热门文章

  1. 邱姓女孩五行缺水取名
  2. EIE结构与算法映射
  3. 西门子1200PLC程序SCL数控G代码功能块源文件 S7-1200PLC程序SCL数控G代码功能块源文件
  4. 老子是一个怎样的传奇!(转发)
  5. 浙江移动智能语音服务器,电视还能这样玩?中国移动智能语音遥控器,让电视机听你的...
  6. 经典伴读_GOF设计模式_结构型模式
  7. SQL Server日期数据类型DATE的使用
  8. 如何查看eclipse是32位还是64位
  9. oauth2 ldap sso
  10. 【文献数据速递】CEO绿色经历能否促进企业绿色创新