对象的大小和位置

1.对象的显示模型

一个对象的所有像素包括以下4部分:

  • 边界(bounding)框:元素的宽度/高度围起来的区域。

  • 边框(border)宽度:边框的宽度。

  • 填充(padding):对象两侧与其子对象之间的空间。

  • 内容(content):如果边界框按边框宽度和填充的大小缩小,则显示其大小的内容区域。

2.改变对象位置的方式

(1)直接方式

1
2
3
lv_obj_set_x(obj, 10);
lv_obj_set_y(obj, 20);
lv_obj_set_pos(obj, 10, 20); //Or in one function

(2)百分比

lv_obj_set_x(btn, lv_pct(10)); //x = 10 % of parant content area width

(3)设置对齐

1
2
3
4
5
6
//与父对象对齐
void lv_obj_align(struct _lv_obj_t * obj, lv_align_t align,
lv_coord_t x_ofs, lv_coord_t y_ofs);
//与任意对象对齐
void lv_obj_align_to(struct _lv_obj_t * obj, const struct _lv_obj_t * base,
lv_align_t align, lv_coord_t x_ofs,lv_coord_t y_ofs);

常用的对齐选择有LV_ALIGN_CENTER,其他的组成格式为:LV_ALIGEN_ + TOP/BOTTOM + _LEFT/MID/RIGHT

3.改变对象的大小

可以通过如下方式更改对象大小的属性

1
2
3
4
lv_obj_set_width(obj, 200);
lv_obj_set_height(obj, 100);
lv_obj_set_size(obj, 200, 100); //Or in one function
lv_obj_set_height(obj, lv_pct(100));//百分比

获取对象的大小属性

1
2
3
4
lv_coord_t w = lv_obj_get_width(obj);
lv_coord_t h = lv_obj_get_height(obj);
lv_coord_t content_w = lv_obj_get_content_width(obj);
lv_coord_t content_h = lv_obj_get_content_height(obj);