- Docs »
- Widgets »
- Roller (lv_roller)
- Edit on GitHub
Overview¶
Roller allows you to simply select one option from more with scrolling.
Parts and Styles¶
The Roller's main part is called LV_ROLLER_PART_BG
. It's a rectangle and uses all the typical background properties.The style of the Roller's label is inherited from the text style properties of the background.To adjust the space between the options use the text_line_space style property.The padding style properties set the space on the sides.
The selected option in the middle can be referenced with LV_ROLLER_PART_SELECTED
virtual part. Besides the typical background properties it uses the text properties to change the appearance of the text in the selected area.
Usage¶
Set options¶
The options are passed to the Roller as a string with lv_roller_set_options(roller, options, LV_ROLLER_MODE_NORMAL/INFINITE)
. The options should be separated by \n
. For example: "First\nSecond\nThird"
.
LV_ROLLER_MODE_INFINITE
make the roller circular.
You can select an option manually with lv_roller_set_selected(roller, id, LV_ANIM_ON/OFF)
, where id is the index of an option.
Get selected option¶
The get the currently selected option use lv_roller_get_selected(roller)
it will return the index of the selected option.
lv_roller_get_selected_str(roller, buf, buf_size)
copy the name of the selected option to buf
.
Align the options¶
To align the label horizontally use lv_roller_set_align(roller, LV_LABEL_ALIGN_LEFT/CENTER/RIGHT)
.
Visible rows¶
The number of visible rows can be adjusted with lv_roller_set_visible_row_count(roller, num)
Animation time¶
When the Roller is scrolled and doesn't stop exactly on an option it will scroll to the nearest valid option automatically.The time of this scroll animation can be changed by lv_roller_set_anim_time(roller, anim_time)
. Zero animation time means no animation.
Events¶
Besides, the Generic events the following Special events are sent by the Drop down lists:
LV_EVENT_VALUE_CHANGED sent when a new option is selected
Learn more about Events.
Keys¶
The following Keys are processed by the Buttons:
LV_KEY_RIGHT/DOWN Select the next option
LV_KEY_LEFT/UP Select the previous option
LY_KEY_ENTER Apply the selected option (Send
LV_EVENT_VALUE_CHANGED
event)
Example¶
C¶
Simple Roller¶
code
#include "../../../lv_examples.h"#include <stdio.h>#if LV_USE_ROLLERstatic void event_handler(lv_obj_t * obj, lv_event_t event){ if(event == LV_EVENT_VALUE_CHANGED) { char buf[32]; lv_roller_get_selected_str(obj, buf, sizeof(buf)); printf("Selected month: %s\n", buf); }}void lv_ex_roller_1(void){ lv_obj_t *roller1 = lv_roller_create(lv_scr_act(), NULL); lv_roller_set_options(roller1, "January\n" "February\n" "March\n" "April\n" "May\n" "June\n" "July\n" "August\n" "September\n" "October\n" "November\n" "December", LV_ROLLER_MODE_INFINITE); lv_roller_set_visible_row_count(roller1, 4); lv_obj_align(roller1, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_event_cb(roller1, event_handler);}#endif
MicroPython¶
No examples yet.
API¶
Typedefs
- typedef uint8_t
lv_roller_mode_t
¶
- typedef uint8_t
lv_roller_part_t
¶
Enums
- enum [anonymous]¶
Roller mode.
Values:
- enumerator
LV_ROLLER_MODE_NORMAL
¶ Normal mode (roller ends at the end of the options).
- enumerator
LV_ROLLER_MODE_INFINITE
¶ Infinite mode (roller can be scrolled forever).
- enumerator
- enum [anonymous]¶
Values:
- enumerator
LV_ROLLER_PART_BG
= LV_PAGE_PART_BG¶
- enumerator
LV_ROLLER_PART_SELECTED
= _LV_PAGE_PART_VIRTUAL_LAST¶
- enumerator
_LV_ROLLER_PART_VIRTUAL_LAST
¶
- enumerator
Functions
- lv_obj_t *
lv_roller_create
(lv_obj_t *par, const lv_obj_t *copy)¶ Create a roller object
- Return
pointer to the created roller
- Parameters
par
: pointer to an object, it will be the parent of the new rollercopy
: pointer to a roller object, if not NULL then the new object will be copied from it
- void
lv_roller_set_options
(lv_obj_t *roller, const char *options, lv_roller_mode_t mode)¶ Set the options on a roller
- Parameters
roller
: pointer to roller objectoptions
: a string with '' separated options. E.g. "One\nTwo\nThree"
mode
:LV_ROLLER_MODE_NORMAL
orLV_ROLLER_MODE_INFINITE
- void
lv_roller_set_align
(lv_obj_t *roller, lv_label_align_t align)¶ Set the align of the roller's options (left, right or center[default])
- Parameters
roller
: - pointer to a roller objectalign
: - one of lv_label_align_t values (left, right, center)
- void
lv_roller_set_selected
(lv_obj_t *roller, uint16_t sel_opt, lv_anim_enable_t anim)¶ Set the selected option
- Parameters
roller
: pointer to a roller objectsel_opt
: id of the selected option (0 ... number of option - 1);anim
: LV_ANIM_ON: set with animation; LV_ANIM_OFF set immediately
- void
lv_roller_set_visible_row_count
(lv_obj_t *roller, uint8_t row_cnt)¶ Set the height to show the given number of rows (options)
- Parameters
roller
: pointer to a roller objectrow_cnt
: number of desired visible rows
- void
lv_roller_set_auto_fit
(lv_obj_t *roller, bool auto_fit)¶ Allow automatically setting the width of roller according to it's content.
- Parameters
roller
: pointer to a roller objectauto_fit
: true: enable auto fit
- void
lv_roller_set_anim_time
(lv_obj_t *roller, uint16_t anim_time)¶ Set the open/close animation time.
- Parameters
roller
: pointer to a roller objectanim_time
: open/close animation time [ms]
- uint16_t
lv_roller_get_selected
(const lv_obj_t *roller)¶ Get the id of the selected option
- Return
id of the selected option (0 ... number of option - 1);
- Parameters
roller
: pointer to a roller object
- uint16_t
lv_roller_get_option_cnt
(const lv_obj_t *roller)¶ Get the total number of options
- Return
the total number of options in the list
- Parameters
roller
: pointer to a roller object
- void
lv_roller_get_selected_str
(const lv_obj_t *roller, char *buf, uint32_t buf_size)¶ Get the current selected option as a string
- Parameters
roller
: pointer to roller objectbuf
: pointer to an array to store the stringbuf_size
: size ofbuf
in bytes. 0: to ignore it.
- lv_label_align_t
lv_roller_get_align
(const lv_obj_t *roller)¶ Get the align attribute. Default alignment after _create is LV_LABEL_ALIGN_CENTER
- Return
LV_LABEL_ALIGN_LEFT, LV_LABEL_ALIGN_RIGHT or LV_LABEL_ALIGN_CENTER
- Parameters
roller
: pointer to a roller object
- bool
lv_roller_get_auto_fit
(lv_obj_t *roller)¶ Get whether the auto fit option is enabled or not.
- Return
true: auto fit is enabled
- Parameters
roller
: pointer to a roller object
- const char *
lv_roller_get_options
(const lv_obj_t *roller)¶ Get the options of a roller
- Return
the options separated by '
'-s (E.g. "Option1\nOption2\nOption3")
- Parameters
roller
: pointer to roller object
- uint16_t
lv_roller_get_anim_time
(const lv_obj_t *roller)¶ Get the open/close animation time.
- Return
open/close animation time [ms]
- Parameters
roller
: pointer to a roller
- struct
lv_roller_ext_t
¶ Public Members
- lv_page_ext_t
page
¶
- lv_style_list_t
style_sel
¶
- uint16_t
option_cnt
¶
- uint16_t
sel_opt_id
¶
- uint16_t
sel_opt_id_ori
¶
- lv_roller_mode_t
mode
¶
- uint8_t
auto_fit
¶
- lv_page_ext_t