二 代码分析

用户可下载"圆弧对象(lv_arc)的使用"文章末尾的Demo工程(点击我直接下载),参考圆弧对象(lv_arc)的使用文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加cont_test()函数测试。

void cont_test(void)

{

lv_obj_t * cont;

cont = lv_cont_create(lv_scr_act(), NULL);

lv_obj_set_auto_realign(cont, true); /*Auto realign when the size changes*/

lv_obj_align_origo(cont, NULL, LV_ALIGN_CENTER, 0, 0); /*This parametrs will be sued when realigned*/

lv_cont_set_fit(cont, LV_FIT_TIGHT);

lv_cont_set_layout(cont, LV_LAYOUT_COL_M);

lv_obj_t * label;

label = lv_label_create(cont, NULL);

lv_label_set_text(label, "Short text");

label = lv_label_create(cont, NULL);

lv_label_set_text(label, "It is a long text");

label = lv_label_create(cont, NULL);

lv_label_set_text(label, "Here is an even longer text");

} 我们先来看一下lv_obj_set_auto_realign函数,这个函数的主要作用是当对象大小更改后启用自动对齐,不过这个函数实际上是属于基本的对象的基本属性,因为这个函数是以lv_obj开头的,所以不属于容器控件的特殊函数。

然后lv_obj_align_origo函数在你设置更改大小自动对齐后,这个是必须要有的,因为这个函数设置的是自动对齐方式,第二个参数就是当前容器要与之对齐的对象,填写NULL时是以我们的窗口为对象对齐的,然后LV_ALIGN_CENTER这个我们之前也讲过是内部居中对齐,然后后面两个参数是偏移坐标,这里是选择不偏移。

然后lv_cont_set_fit函数是设置我们的容器与容器内部的对象的围绕方式或者大小,其中第二个参数主要有下面几种:

/**

* How to resize the container around the children.

*/

enum {

LV_FIT_NONE, /**< Do not change the size automatically*/

LV_FIT_TIGHT, /**< Shrink wrap around the children */

LV_FIT_FLOOD, /**< Align the size to the parent's edge*/

LV_FIT_FILL, /**< Align the size to the parent's edge first but if there is an object out of it

then get larger */

_LV_FIT_NUM

};

typedef uint8_t lv_fit_t; 根据我实际测试,只有LV_FIT_TIGHT效果最好,其它效果大家可以自己测试一下,不过我感觉是都没效果。。。

lv_cont_set_layout这是设置我们的容器的布局方式,同样的参数也是一个枚举类型,主要有下面的几种选择:

/** Container layout options*/

enum {

LV_LAYOUT_OFF = 0, /**< 无对齐 */

LV_LAYOUT_CENTER, /**< 居中对齐 */

LV_LAYOUT_COL_L, /**< 水平靠左*/

LV_LAYOUT_COL_M, /**< 水平居中*/

LV_LAYOUT_COL_R, /**< 水平靠右*/

LV_LAYOUT_ROW_T, /**< 垂直靠上*/

LV_LAYOUT_ROW_M, /**< 垂直居中*/

LV_LAYOUT_ROW_B, /**< 垂直靠下*/

LV_LAYOUT_PRETTY, /**< 行对齐*/

LV_LAYOUT_GRID, /**< 网格对齐*/

_LV_LAYOUT_NUM

};

typedef uint8_t lv_layout_t; 几种对齐方式有没有很熟悉呢?是的,就跟我们的Word或者Excel的表格中的文本对齐差不多,然后我们就往容器中添加文本了,大家可以先注释掉后两次的文本添加看一下大小,然后取消注释后再看一下容器的大小,事实正面容器的大小是在变化的,而我们没有进行任何的容器大小操作,所以容器就可以理解为装着某些对象的器件,但是这个器件会随着内部的对象的大小或者内容而改变大小。

OK,那么本节课先到这里,关于图表控件还有些不太常用的属性以及API,这里也就不再做介绍,不过相信随着你学习的深入,肯定自己也会摸索出很多方法的,那么我们下节课学习下拉列表控件,我们下节课再见!

littlevgl教程 Linux,树莓派littlevGL系列教程:容器控件(lv_cont)相关推荐

  1. 树莓派开发系列教程10——树莓派spi液晶屏支持(fbtft)

        树莓派官方支持av及HDMI输出,板子上预留了一个csi接口的液晶显示屏,但是一直没有相应的模组出现.在很多应用场合我们需要一些小型的液晶屏显示一些基本的信息,所以小屏驱动很是必要. 在git ...

  2. 树莓派4B系列教程三 :优化配置

    树莓派4B系列教程三 :优化配置 写在前面 树莓派4B内存增加 CPU温度控制 显存优化 Chromuim缓存转移 优化自启程序 Chromium插件安装 离线安装插件时遇到的问题 结语 写在前面 不 ...

  3. Linux求平方脚本,Linux Shell脚本系列教程(五):数学运算

    这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...

  4. Linux pwn入门教程,pwn堆入门系列教程1

    pwn堆入门系列教程1 因为自己学堆的时候,找不到一个系统的教程,我将会按照ctf-wiki的目录一步步学下去,尽量做到每周有更新,方便跟我一样刚入门堆的人学习,第一篇教程研究了4天吧,途中没人指导. ...

  5. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

  6. linux php环境搭建 图文教程,linux php环境搭建教程

    1) 安装依赖包yum -y install wget vim pcre pcre-devel openssl openssl-devel \libicu-devel gcc gcc-c++ auto ...

  7. php5.4 教程,linux php5.4 装置教程_后端开发

    linux php5.4装置要领:起首装置apache并解压php:然后举行编译装置:接着将"php.ini-production"复制到lib目次下并改名为"php.i ...

  8. python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...

    感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...

  9. python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。

    本文是在上一篇的基础上编写的,若要查看见:雨滴测试:python基础系列教程1-可能是你见过的最通俗易懂的教程​zhuanlan.zhihu.com 五. python函数 所谓的函数,就是具有特定功 ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task07. 合并两个有序链表
  2. linkerd——针对java的为微服务提供可靠性的proxy,服务发现重试LB等
  3. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )
  4. 如何调试程序的后台作业
  5. Spring4学习笔记
  6. 【JSP】jsp报错:Syntax error, insert } to complete MethodBody
  7. hbase1.1.1 连接集群_HBase-1.0.1学习笔记(一)集群搭建
  8. selenium使用浏览器隐私模式加载网站
  9. MyBatis学习总结(7)——Mybatis缓存
  10. sql server重命名_在Linux上SQL Server中重命名逻辑和物理文件名
  11. Codeforces 165D Beard Graph 边权树剖+树状数组
  12. mysql 常用函数循环_mysql 常用函数
  13. Oracle日期函数TRUNC
  14. 微信小程序实现输入车牌号码的功能(附效果图)
  15. 使用golang实现对请求签名和验签
  16. 学习GIT的一个小游戏
  17. 虚拟主机共享IP地址
  18. IT经理的两条职业路做管理还是管理咨询
  19. Linux服务器如何添加永久路由
  20. Linux系统如何安装Python?新手教程

热门文章

  1. 网络攻防学习心得一(20159320)学习小结
  2. 2023首届大学生算法大赛 - 村庄
  3. 【区间 dp】A005_LC_工作计划的最低难度(暴搜 / dp)
  4. 深度学习与多层神经网络的区别
  5. 一次性消费品商城小程序开发,生活更便捷
  6. MybatisPlus整合SpringBoot全教程,用起来不要太方便
  7. 2016面试整理--来源牛客网
  8. Problem B: 薪酬计算 之二
  9. spss菜单小介绍【跟阿婷一起学spss 03 在入坑边缘疯狂试探】
  10. 为什么建议大家一定要办一张大流量卡!