mirror of
https://github.com/lvgl/lvgl.git
synced 2024-11-27 11:43:43 +08:00
128 lines
3.7 KiB
ReStructuredText
128 lines
3.7 KiB
ReStructuredText
Span (lv_span)
|
|
==============
|
|
|
|
Overview
|
|
********
|
|
|
|
A spangroup is the object that is used to display rich text. Different
|
|
from the label object, ``spangroup`` can render text styled with
|
|
different fonts, colors, and sizes into the spangroup object.
|
|
|
|
Parts and Styles
|
|
****************
|
|
|
|
- :cpp:enumerator:`LV_PART_MAIN` The spangroup has only one part.
|
|
|
|
Usage
|
|
*****
|
|
|
|
Set text and style
|
|
------------------
|
|
|
|
The spangroup object uses span to describe text and text style. so,
|
|
first we need to create ``span`` descriptor using ``lv_span_t * span = lv_spangroup_new_span(spangroup)``.
|
|
Then use :cpp:expr:`lv_span_set_text(span, "text")` to set text. The style of the span is
|
|
configured as with a normal style object by using its ``style`` member,
|
|
eg::cpp:expr:`lv_style_set_text_color(&span->style, lv_palette_main(LV_PALETTE_RED))`.
|
|
|
|
If spangroup object ``mode != LV_SPAN_MODE_FIXED`` you must call
|
|
:cpp:func:`lv_spangroup_refr_mode` after you have modified ``span``
|
|
style(eg:set text, changed the font size, del span).
|
|
|
|
Retrieving a span child
|
|
-----------------------
|
|
|
|
Spangroups store their children differently from normal objects, so
|
|
normal functions for getting children won't work.
|
|
|
|
:cpp:expr:`lv_spangroup_get_child(spangroup, id)` will return a pointer to the
|
|
child span at index ``id``. In addition, ``id`` can be negative to index
|
|
from the end of the spangroup where ``-1`` is the youngest child, ``-2``
|
|
is second youngest, etc.
|
|
|
|
e.g. ``lv_span_t* span = lv_spangroup_get_child(spangroup, 0)`` will
|
|
return the first child of the spangroup.
|
|
``lv_span_t* span = lv_spangroup_get_child(spangroup, -1)`` will return
|
|
the last (or most recent) child.
|
|
|
|
Child Count
|
|
-----------
|
|
|
|
Use the function :cpp:expr:`lv_spangroup_get_child_cnt(spangroup)` to get back
|
|
the number of spans the group is maintaining.
|
|
|
|
e.g. ``uint32_t size = lv_spangroup_get_child_cnt(spangroup)``
|
|
|
|
Text align
|
|
----------
|
|
|
|
like label object, the spangroup can be set to one the following modes:
|
|
|
|
- :cpp:enumerator:`LV_TEXT_ALIGN_LEFT` Align text to left.
|
|
- :cpp:enumerator:`LV_TEXT_ALIGN_CENTER` Align text to center.
|
|
- :cpp:enumerator:`LV_TEXT_ALIGN_RIGHT` Align text to right.
|
|
- :cpp:enumerator:`LV_TEXT_ALIGN_AUTO` Align text auto.
|
|
|
|
use function :cpp:expr:`lv_spangroup_set_align(spangroup, LV_TEXT_ALIGN_CENTER)`
|
|
to set text align.
|
|
|
|
Modes
|
|
-----
|
|
|
|
The spangroup can be set to one the following modes:
|
|
|
|
- :cpp:enumerator:`LV_SPAN_MODE_FIXED` fixes the object size.
|
|
- :cpp:enumerator:`LV_SPAN_MODE_EXPAND` Expand the object size to the text size but stay on a single line.
|
|
- :cpp:enumerator:`LV_SPAN_MODE_BREAK` Keep width, break the too long lines and auto expand height.
|
|
|
|
Use :cpp:expr:`lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_BREAK)` to set
|
|
object mode.
|
|
|
|
Overflow
|
|
--------
|
|
|
|
The spangroup can be set to one the following modes:
|
|
|
|
- :cpp:enumerator:`LV_SPAN_OVERFLOW_CLIP` truncates the text at the limit of the area.
|
|
- :cpp:enumerator:`LV_SPAN_OVERFLOW_ELLIPSIS` will display an ellipsis(``...``) when text overflows the area.
|
|
|
|
Use :cpp:expr:`lv_spangroup_set_overflow(spangroup, LV_SPAN_OVERFLOW_CLIP)` to set object overflow mode.
|
|
|
|
first line indent
|
|
-----------------
|
|
|
|
Use :cpp:expr:`lv_spangroup_set_indent(spangroup, 20)` to set the indent of the
|
|
first line. all modes support pixel units, in addition to :cpp:enumerator:`LV_SPAN_MODE_FIXED`
|
|
and :cpp:enumerator:`LV_SPAN_MODE_BREAK` mode supports percentage units
|
|
too.
|
|
|
|
lines
|
|
-----
|
|
|
|
Use :cpp:expr:`lv_spangroup_set_lines(spangroup, 10)` to set the maximum number
|
|
of lines to be displayed in LV_SPAN_MODE_BREAK mode, negative values
|
|
indicate no limit.
|
|
|
|
Events
|
|
******
|
|
|
|
No special events are sent by this widget.
|
|
|
|
Learn more about :ref:`events`.
|
|
|
|
Keys
|
|
****
|
|
|
|
No *Keys* are processed by the object type.
|
|
|
|
Learn more about :ref:`indev_keys`.
|
|
|
|
Example
|
|
*******
|
|
|
|
|
|
.. include:: ../examples/widgets/span/index.rst
|
|
|
|
API
|
|
***
|