约束 动态Label 排列

    有需求  两个Label  并行排列 都是动态的宽度   要完成的效果如下

首先按照一般写法就是

就会出现

后面突然发现

这样写 就OK 了    有点蒙蔽   求大神更好的指点   


以上全部fuck

发现在左边文字多的情况还是左边...以右边的为基础了  所以给我一个道理 就是 两个label互相排列  必须要有一个lable的宽度近似固定  最大值or最小值 



### 实现 LVGL 中 Label 组件的自动换行与居中对齐 在 LVGL 框架中,Label 是一种常用的 UI 控件,用于显示文本内容。要实现 Label 的 **自动换行** 和 **居中对齐** 功能,可以通过设置相应的属性来完成。 以下是具体的实现方法和示例代码: #### 1. 创建 Label 并启用自动换行 通过调用 `lv_label_set_long_mode()` 方法,可以指定 Label 对象如何处理超出宽度的内容。如果希望文本能够自动换行,则应将其模式设置为 `LV_LABEL_LONG_BREAK` 或者其他适合的选项[^3]。 ```c // 创建一个新的 Label 控件 lv_obj_t *label = lv_label_create(lv_scr_act(), NULL); // 启用自动换行功能 lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); ``` #### 2. 设置文本内容水平方向上的居中对齐 为了让每一行的文字都处于容器中心的位置,需要调整文本内部的排列方式。这一步骤可通过 `lv_label_set_align()` 来完成,传入参数 `LV_LABEL_ALIGN_CENTER` 可达到预期效果[^3]。 ```c // 将文本内容设置为中心对齐 lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); ``` #### 3. 定义 Label 的宽度约束条件 由于只有当实际可用空间小于所需展示面积时才会触发断词行为,所以还需要明确限定控件本身的尺寸范围。通常来说,我们会依据屏幕分辨率或者其他父级对象的比例关系给出具体数值[^1]。 ```c // 设定最大允许使用的横向跨度(假设这里是全屏宽度) lv_obj_set_width(label, LV_HOR_RES_MAX); ``` #### 4. 添加一些测试性的文字材料以便验证配置有效性 最后一步便是赋予这个新建立起来的标签一段具有代表意义的话语作为演示素材[^3]。 ```c // 应用一段带有空白分隔符的字符串到刚才构建完毕的那个实例上面去 lv_label_set_text(label, "这是一个用来检验自动折行以及中间定位特性的样例语句"); ``` 综合上述各点之后形成的完整版本如下所示: ```c #include "lvgl/lvgl.h" void create_centered_wrapping_label(void){ // Step 1: Create a new label on active screen. lv_obj_t *label = lv_label_create(lv_scr_act(), NULL); // Step 2: Enable line breaking for long texts inside this widget instance. lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); // Step 3: Center align all individual rows within the given area boundaries. lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); // Step 4: Constrain width to ensure wrapping occurs properly under certain circumstances. lv_obj_set_width(label, LV_HOR_RES_MAX); // Optional step - Assign an initial piece of information into our freshly created element here. const char* sampleText="这是一个用来检验自动折行以及中间定位特性的样例语句"; lv_label_set_text(label,sampleText); } ``` --- ### 注意事项 - 上述例子假定了当前运行环境已经成功初始化了 LVGL 图形库,并且至少存在一个有效的显示屏上下文可供操作。 - 如果计划让此类布局适应不同的设备规格,请考虑引入动态计算机制替代固定的常量值定义策略[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值