Scroller example
This example is very short and will illustrate one way to use a scroller. We'll omit the declaration of the text
variable because it's a very long ipsum lorem . If you really want to see the full code, it's scroller_example_01.c.
We start our example by creating our window and background:
EAPI_MAIN int elm_main(int argc, char **argv) { Evas_Object *win, *bg, *label, *scroller; win = elm_win_add(NULL, "scroller", ELM_WIN_BASIC); elm_win_title_set(win, "Scroller"); elm_win_autodel_set(win, EINA_TRUE); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); bg = elm_bg_add(win); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, bg); evas_object_show(bg);
Next we create a label and set it's text to text(very long ipsum lorem)
:
label = elm_label_add(win); elm_object_text_set(label, text); evas_object_show(label);
We then create our scroller, ask that it have the same size as the window and set its content:
scroller = elm_scroller_add(win); evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, scroller); evas_object_show(scroller); elm_object_content_set(scroller, label);
We are now going to set a number of properties in our scroller:
- We make it bounce horizontally but not vertically.
- We make both scrollbars always be visible.
- We have the events be propagated from the content to the scroller.
- We enforce a page policy vertically(having a page be the size of the viewport) and leave horizontal scrolling free.
- And finally we ask the scroller to show us a region starting at 50,50 and having a width and height of 200px.
elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_FALSE); elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON); elm_scroller_propagate_events_set(scroller, EINA_TRUE); elm_scroller_page_relative_set(scroller, 0, 1); elm_scroller_region_show(scroller, 50, 50, 200, 200);
- Note:
- Observant reader will note that the elm_scroller_region_show() didn't scroll the view vertically, this is because we told the scroller to only accept vertical scrolling in pages.
evas_object_resize(win, 400, 400); evas_object_show(win); elm_run(); elm_shutdown(); return 0; } ELM_MAIN()
Our example will look like this:
