LVGL之textarea

1.宽度自适应

可以通过lv_font_get_glyph_width获取字体文件的宽度,当textarea的文本变换时获取对应字符串计算字符个数,设置宽度即可动态变化

static void my_textarea_event_handler(lv_event_t* e)
{
    lv_obj_t* ta = lv_event_get_target(e);
    LV_LOG_USER("Enter was pressed. The current text is: %s", lv_textarea_get_text(ta));
    int num = getCharacterCount(lv_textarea_get_text(ta));

    // 中文字符
    wchar_t chineseChar = L'这';
    // 获取Unicode码点
    wint_t unicodeCodePoint = chineseChar;
    // 打印Unicode码点
    printf("中文字符 '%lc' 的Unicode码点是 U+%04X\n", chineseChar, unicodeCodePoint);

    int w = lv_font_get_glyph_width(&MyFontNormal15, 0x8FD9, 0x662F);
    printf("w:%d\n", w);
    lv_obj_set_width(ta, w * num);
    //lv_obj_get_style_text_font()
}

2.行间距

lvgl textarea的行间距为0时,两行文本并不会紧挨着,而是隔了一个字符宽度,此特性不确定,只是通过现象猜的。
所以为了文本紧凑,可以这样设置行间距

	lv_font_t* t = lv_obj_get_style_text_font(ta, LV_PART_MAIN);
    int w = lv_font_get_glyph_width(t, 0x8FD9, 0x662F);
    printf("w:%d\n", w);
    lv_obj_set_style_text_line_space(ta, -w, LV_PART_MAIN);
    printf("h:%d\n", lv_font_get_line_height(t));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值