Languages

Menu
Sites
Language
scroller 에 layout 추가하니 안보여요...

안녕하세요. 아래는 Tizen Sample Project v2.3.1(UI Components -> (Eext) Scroller -> Horizontal Pagecontrol) 의 일부 코드입니다.

scroller 에 image 를 추가하면 잘 나오지만 layout을 추가하니 화면이 나오질 않는데,

어떻게 하면 화면이 나올까요? 가능한 거겠죠?

어렵네요...

최종 목적은 배경 이미지 위에 (button) 이미지를 올려 callback 처리를 해야 합니다.

굳이 layout 을 올리지 못하면 image 위에 image라도 올려 처리하면 될거 같은데.. 

뭔가 방법을 알고 계시면 답글 좀 부탁드립니다.

void create_view(void *data)
{
        app_data *ad;
	Evas_Object *scroller = NULL;
	Evas_Object *box = NULL;
	Evas_Object *rect = NULL;
	Evas_Object *circle_scroller = NULL;
	Evas_Object *ic = NULL;
	Evas_Object *layout = NULL;
	Evas_Object *start_box = NULL;
	Evas_Coord w, h;
	int i;

	if (!data)
		return;
	ad = (app_data *) data;

	scroller = elm_scroller_add(ad->nf);
	elm_scroller_loop_set(scroller, EINA_FALSE, EINA_FALSE);
	elm_scroller_page_size_set(scroller, ICON_WIDTH, 0);
	elm_scroller_page_scroll_limit_set(scroller, 1, 0);
	elm_object_scroll_lock_y_set(scroller, EINA_TRUE);
	evas_object_show(scroller);

	circle_scroller = eext_circle_object_scroller_add(scroller, ad->circle_surface);
	eext_circle_object_scroller_policy_set(circle_scroller, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_OFF);
	eext_rotary_object_event_activated_set(circle_scroller, EINA_TRUE);

	box = elm_box_add(scroller);
	elm_box_horizontal_set(box, EINA_TRUE);
	elm_object_content_set(scroller, box);
	evas_object_show(box);

	rect = evas_object_rectangle_add(evas_object_evas_get(box));
	evas_object_geometry_get(ad->nf, NULL, NULL, &w, &h);
	evas_object_size_hint_min_set(rect, (w - ICON_WIDTH) / 2, h);
	elm_box_pack_end(box, rect);

	for (i = 0; i < NUM_ITEMS; ++i)
	{
                                   // 마지막 페이지에 layout 추가했지만 영역은 잡히지만 아무것도 보이지 않음
		if (i == (NUM_ITEMS - 1))
		{
			char buf[PATH_MAX] = { 0, };

			layout = elm_layout_add(box);

			sprintf(buf, "%s%s", app_get_resource_path(), "edje/dummy.edj");
			elm_layout_file_set(layout, buf, "dummy_view");
			evas_object_size_hint_min_set(layout, ICON_WIDTH, h);
			evas_object_show(layout);
			start_box = elm_box_add(layout);
			evas_object_size_hint_min_set(start_box, ICON_WIDTH, h);
			evas_object_show(start_box);
			elm_box_pack_end(box, start_box);
		}
                // 이미지를 추가하면 잘 보임
		else
		{
			ic = elm_image_add(box);
			elm_image_file_set(ic, dummy_images[i % (sizeof(dummy_images) / sizeof(char *))], NULL);
			evas_object_size_hint_min_set(ic, ICON_WIDTH, h);
			evas_object_show(ic);
			elm_box_pack_end(box, ic);
		}
	}

	elm_box_pack_end(box, rect);

	Elm_Object_Item *it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, scroller, NULL);
	elm_naviframe_item_title_enabled_set(it, EINA_FALSE, EINA_FALSE);
	elm_naviframe_item_pop_cb_set(it, main_view_cb, ad);
}

 

Edited by: Seong Jun Bang on 20 Sep, 2015

Responses

1 Replies
Alex Dem

Hi,
1. I am not sure that you load your file with edc mark up correctly - but maybe it is ok.
2. It is not clear what element of layout you try to display. I think you should use elm_object_part_content_set in this case.

I just added some code under your condition (based on 2.3.1: UI Components for wearable (circle) ), it works on my emulator:

        if (i == (NUM_ITEMS - 1))
        {
            Evas_Object *layout = elm_layout_add(box);
            elm_layout_file_set(layout, ELM_DEMO_EDJ, "image_layout");
            evas_object_show(layout);
            evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

            Evas_Object *image1 = elm_image_add(layout);
            evas_object_size_hint_min_set(image1, ICON_WIDTH, ICON_HEIGHT);
            snprintf(buf, sizeof(buf), "%s/png_image.png",ICON_DIR);
            elm_image_file_set(image1, buf, NULL);
            elm_object_part_content_set(layout, "image1", image1);

            Evas_Object *image2 = elm_image_add(layout);
            evas_object_size_hint_min_set(image2, ICON_WIDTH, ICON_HEIGHT);
            snprintf(buf, sizeof(buf), "%s/grid_image/1_raw.png",ICON_DIR);
            elm_image_file_set(image2, buf, NULL);
            elm_object_part_content_set(layout, "image2", image2);

            elm_box_pack_end(box, layout);
        }

Alexey.