「App:Library:LVGL:docs:Others:Grid navigation」の版間の差分
47行目: | 47行目: | ||
=== Basic grid navigation === | === Basic grid navigation === | ||
+ | [[ファイル:LVGL docs others gridnav 01.png|代替文=LVGL docs others gridnav 01|サムネイル|LVGL docs others gridnav 01]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
----Grid navigation on a list | ----Grid navigation on a list | ||
+ | [[ファイル:LVGL docs others gridnav 02.png|代替文=LVGL docs others gridnav 02|サムネイル|LVGL docs others gridnav 02]] | ||
----Nested grid navigations | ----Nested grid navigations | ||
+ | [[ファイル:LVGL docs others gridnav 03.png|代替文=LVGL docs others gridnav 03|サムネイル|LVGL docs others gridnav 03]] | ||
---- | ---- | ||
+ | |||
+ | == API == | ||
+ | |||
+ | ===== Typedefs ===== | ||
+ | |||
+ | ; <span id="_CPPv320_keep_pedantic_happy"></span><span id="_CPPv220_keep_pedantic_happy"></span><span id="_keep_pedantic_happy"></span><span id="lv__gridnav_8h_1ab1e9e3d06e6eaa92a708e9ecafcb6909" class="target"></span>typedef int _keep_pedantic_happy[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv420_keep_pedantic_happy] <span id="_CPPv320_keep_pedantic_happy"></span><span id="_CPPv220_keep_pedantic_happy"></span><span id="_keep_pedantic_happy"></span><span id="lv__gridnav_8h_1ab1e9e3d06e6eaa92a708e9ecafcb6909" class="target"></span> | ||
+ | : | ||
+ | |||
+ | ===== Enums ===== | ||
+ | |||
+ | ; <span id="_CPPv317lv_gridnav_ctrl_t"></span><span id="_CPPv217lv_gridnav_ctrl_t"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2" class="target"></span>enum lv_gridnav[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv420_keep_pedantic_happy]_ctrl_t[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv417lv_gridnav_ctrl_t] <span id="_CPPv317lv_gridnav_ctrl_t"></span><span id="_CPPv217lv_gridnav_ctrl_t"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2" class="target"></span> | ||
+ | : ''Values:'' | ||
+ | :; <span id="_CPPv3N17lv_gridnav_ctrl_t20LV_GRIDNAV_CTRL_NONEE"></span><span id="_CPPv2N17lv_gridnav_ctrl_t20LV_GRIDNAV_CTRL_NONEE"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2a7efb723f474f968aa227921c9000b739" class="target"></span>enumera[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv417lv_gridnav_ctrl_t]tor LV_GRIDNAV_CTRL_NONE[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv4N17lv_gridnav_ctrl_t20LV_GRIDNAV_CTRL_NONEE] <span id="_CPPv3N17lv_gridnav_ctrl_t20LV_GRIDNAV_CTRL_NONEE"></span><span id="_CPPv2N17lv_gridnav_ctrl_t20LV_GRIDNAV_CTRL_NONEE"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2a7efb723f474f968aa227921c9000b739" class="target"></span> | ||
+ | :: | ||
+ | :; <span id="_CPPv3N17lv_gridnav_ctrl_t24LV_GRIDNAV_CTRL_ROLLOVERE"></span><span id="_CPPv2N17lv_gridnav_ctrl_t24LV_GRIDNAV_CTRL_ROLLOVERE"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2ac0ea35e0e3ee734a3719d45b84c0eaa0" class="target"></span>enumerator LV_GRIDNAV[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv4N17lv_gridnav_ctrl_t20LV_GRIDNAV_CTRL_NONEE]_CTRL_ROLLOVER[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv4N17lv_gridnav_ctrl_t24LV_GRIDNAV_CTRL_ROLLOVERE] <span id="_CPPv3N17lv_gridnav_ctrl_t24LV_GRIDNAV_CTRL_ROLLOVERE"></span><span id="_CPPv2N17lv_gridnav_ctrl_t24LV_GRIDNAV_CTRL_ROLLOVERE"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2ac0ea35e0e3ee734a3719d45b84c0eaa0" class="target"></span> | ||
+ | :: If there is no next/previous ob[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv4N17lv_gridnav_ctrl_t24LV_GRIDNAV_CTRL_ROLLOVERE]ject in a direction, the focus goes to the object in the next/previous row (on left/right keys) or first/last row (on up/down keys) | ||
+ | :; <span id="_CPPv3N17lv_gridnav_ctrl_t28LV_GRIDNAV_CTRL_SCROLL_FIRSTE"></span><span id="_CPPv2N17lv_gridnav_ctrl_t28LV_GRIDNAV_CTRL_SCROLL_FIRSTE"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2af5f64c076de8241750a708561fdaac02" class="target"></span>enumerator LV_GRIDNAV_CTRL_SCROLL_FIRST[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv4N17lv_gridnav_ctrl_t28LV_GRIDNAV_CTRL_SCROLL_FIRSTE] <span id="_CPPv3N17lv_gridnav_ctrl_t28LV_GRIDNAV_CTRL_SCROLL_FIRSTE"></span><span id="_CPPv2N17lv_gridnav_ctrl_t28LV_GRIDNAV_CTRL_SCROLL_FIRSTE"></span><span id="lv__gridnav_8h_1ac958c6808767b76539d82358cfa5e4b2af5f64c076de8241750a708561fdaac02" class="target"></span> | ||
+ | :: If an arrow is pressed and the focu[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv4N17lv_gridnav_ctrl_t28LV_GRIDNAV_CTRL_SCROLL_FIRSTE]sed object can be scrolled in that direction then it will be scrolled instead of going to the next/previous object. If there is no more room for scrolling the next/previous object will be focused normally | ||
+ | |||
+ | ===== Functions ===== | ||
+ | |||
+ | ; <span id="_CPPv314lv_gridnav_addP8lv_obj_t17lv_gridnav_ctrl_t"></span><span id="_CPPv214lv_gridnav_addP8lv_obj_t17lv_gridnav_ctrl_t"></span><span id="lv_gridnav_add__lv_obj_tP.lv_gridnav_ctrl_t"></span><span id="lv__gridnav_8h_1ae101687ff7ddf68f01d22a53482d1c0d" class="target"></span>void lv_gridnav_add(lv_obj_t *obj, lv_gridnav_ctrl_t ctrl)[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv414lv_gridnav_addP8lv_obj_t17lv_gridnav_ctrl_t] <span id="_CPPv314lv_gridnav_addP8lv_obj_t17lv_gridnav_ctrl_t"></span><span id="_CPPv214lv_gridnav_addP8lv_obj_t17lv_gridnav_ctrl_t"></span><span id="lv_gridnav_add__lv_obj_tP.lv_gridnav_ctrl_t"></span><span id="lv__gridnav_8h_1ae101687ff7ddf68f01d22a53482d1c0d" class="target"></span> | ||
+ | : Add grid navigation feature to an object. It expects t[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv414lv_gridnav_addP8lv_obj_t17lv_gridnav_ctrl_t]he children to be arranged into a grid-like layout. Although it's not required to have pixel perfect alignment. This feature makes possible to use keys to navigate among the children and focus them. The keys other than arrows and press/release related events are forwarded to the focused child. | ||
+ | :; Parameters | ||
+ | ::* obj -- pointer to an object on which navigation should be applied. | ||
+ | ::* ctrl -- control flags from <code>lv_gridnav_ctrl_t</code>. | ||
+ | |||
+ | ; <span id="_CPPv317lv_gridnav_removeP8lv_obj_t"></span><span id="_CPPv217lv_gridnav_removeP8lv_obj_t"></span><span id="lv_gridnav_remove__lv_obj_tP"></span><span id="lv__gridnav_8h_1a9128ece7d3a19dc1cec3eb30526036ae" class="target"></span>void lv_gridnav_remove(lv_obj_t *obj)[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv417lv_gridnav_removeP8lv_obj_t] <span id="_CPPv317lv_gridnav_removeP8lv_obj_t"></span><span id="_CPPv217lv_gridnav_removeP8lv_obj_t"></span><span id="lv_gridnav_remove__lv_obj_tP"></span><span id="lv__gridnav_8h_1a9128ece7d3a19dc1cec3eb30526036ae" class="target"></span> | ||
+ | : Remove the grid navigation suppor[https://docs.lvgl.io/8.2/others/gridnav.html#_CPPv417lv_gridnav_removeP8lv_obj_t]t from an object | ||
+ | :; Parameters | ||
+ | :: obj -- pointer to an object | ||
+ | |||
2022年6月22日 (水) 20:12時点における版
https://docs.lvgl.io/8.2/others/gridnav.html
英文 | 自動翻訳 |
---|---|
Grid navigation (gridnav for short) is a feature that changes the currently focused child object as arrow keys are pressed.
If the children are arranged into a grid-like layout then the up, down, left and right arrows move focus to the nearest sibling in the respective direction.
It doesn't matter how the children are positioned, as only the current x and y coordinates are considered. This means that gridnav works with manually positioned children, as well as Flex and Grid layouts.
Gridnav also works if the children are arranged into a single row or column. That makes it useful, for example, to simplify navigation on a List widget.
Gridnav assumes that the object to which gridnav is added is part of a group. This way, if the object with gridnav is focused, the arrow key presses are automatically forwarded to the object so that gridnav can process the arrow keys.
To move the focus to the next widget of the group use LV_KEY_NEXT/PREV
or lv_group_focus_next/prev()
or the TAB
key on keyboard as usual.
If the container is scrollable and the focused child is out of the view, gridnav will automatically scroll the child into view.
Usage
To add the gridnav feature to an object use lv_gridnav_add(cont, flags)
.
flags
control the behavior of gridnav:
LV_GRIDNAV_CTRL_NONE
Default settingsLV_GRIDNAV_CTRL_ROLLOVER
If there is no next/previous object in a direction, the focus goes to the object in the next/previous row (on left/right keys) or first/last row (on up/down keysLV_GRIDNAV_CTRL_SCROLL_FIRST
If an arrow is pressed and the focused object can be scrolled in that direction then it will be scrolled instead of going to the next/previous object. If there is no more room for scrolling the next/previous object will be focused normally
lv_gridnav_remove(cont)
Removes gridnav from an object.
Focusable objects
An object needs to be clickable or click focusable (LV_OBJ_FLAG_CLICKABLE
or LV_OBJ_FLAG_CLICK_FOCUSABLE
) and not hidden (LV_OBJ_FLAG_HIDDEN
) to be focusable by gridnav.
Example
Grid navigation on a list
Nested grid navigations
API
Typedefs
- typedef int _keep_pedantic_happy[1]
Enums
- enum lv_gridnav[2]_ctrl_t[3]
- Values:
- enumera[4]tor LV_GRIDNAV_CTRL_NONE[5]
- enumerator LV_GRIDNAV[6]_CTRL_ROLLOVER[7]
- If there is no next/previous ob[8]ject in a direction, the focus goes to the object in the next/previous row (on left/right keys) or first/last row (on up/down keys)
- enumerator LV_GRIDNAV_CTRL_SCROLL_FIRST[9]
- If an arrow is pressed and the focu[10]sed object can be scrolled in that direction then it will be scrolled instead of going to the next/previous object. If there is no more room for scrolling the next/previous object will be focused normally
Functions
- void lv_gridnav_add(lv_obj_t *obj, lv_gridnav_ctrl_t ctrl)[11]
- Add grid navigation feature to an object. It expects t[12]he children to be arranged into a grid-like layout. Although it's not required to have pixel perfect alignment. This feature makes possible to use keys to navigate among the children and focus them. The keys other than arrows and press/release related events are forwarded to the focused child.
- Parameters
-
- obj -- pointer to an object on which navigation should be applied.
- ctrl -- control flags from
lv_gridnav_ctrl_t
.
- void lv_gridnav_remove(lv_obj_t *obj)[13]
- Remove the grid navigation suppor[14]t from an object
- Parameters
- obj -- pointer to an object