语言

Menu
Sites
Language
genlist 에서의 spinner 이슈

 

 

안녕하세요...

 

genlist 이용중 문의 사항이 있어서 글을 남기게 되었습니다.

 

제가 현재 개발하고 있는 앱에서는 다양한 genlist를 사용하고 있는데요.

5개의 item line 으로 구성된 genlist 가 있습니다.

기본적으로 하나의 line 은 box 로 container를 가지며 ,

그안에  다양한 object 들로 구성되어 있습니다.

이미지를 첨부할수없어서 아래에 간단히 설명드리면...

 

1(item_style : one_icon) : label + entry  + label

2(item_style : default): label + spinner

3(item_style : default) : label + datetime

4(item_style : one_icon): label + entry + label

5(item_style : default). spinner

 

와 같이 구분됩니다.

각각의 item_style 은 위와같이 선언했구요.

이렇게 했더니,,, ,

두가지 문제에 직면하였습니다.

- 1번 혹은 4번의 entry를 눌렀을경우  spinner 안의 영역이 갑자기 줄어들면서

멀쩡히 잘 표시되던 spinner가  < ... > 이런식으로 spinner의 공간이 줄어들고 text가 ... 으로 변경됩니다 .

- 5번 spinner 의 경우 라인 전체를 사용하고 싶어도 default로 item_style을 주면 중간부터 spinner 가 나옵니다.

full로 줘도 제대로 안나오구요... func.text_get 을 널로 주거나 빼버려도 공간을 full로 사용하지 못하고 있습니다.

 

~아직 제 수준이 부족하여 해결방안을 찾지 못하고 있습니다.

위의 두문제에 대해 조언좀 부탁드립니다.

감사합니다.

响应

2 回复
Jinsol Park

안녕하세요?

 

현재 개발을 어떤 프로파일로 하고 계신건가요?

Tizen 2.3 Mobile profile의 spinner는 기본적으로 세로 배치가 되는데 (https://developer.tizen.org/dev-guide/2.3.0/org.tizen.guides/html/native/ui/ui_widgets_n.htm#spinner)

쓰신 글을 제가 이해하기로는 spinner는 가로배치이면서, 가로 사이즈가 줄어든다라고 이해를 했습니다.

 

문제가 생기는 가로, 세로 방향에 따라, 프로파일에 따라 해결 방법이 다를 수 있는데, 개발중인 프로파일을 말씀해주시면 테스트 해보겠습니다. 

해당 구현 코드도 같이 업로드 해주시면 도움이 되겠네요. :)

(이미지가 업로드 되면 이해가 빠를 것 같은데 아쉽네요.)

 

Kim

혹시 이미지를 업로드 하는 방법을 아시나요?

전 하려고 해도 계속 그림이 안보이네요...ㅡ.ㅜ

ㅁ문서를 첨부하고 싶어도 첨부를 하는곳을 못찾겠어요.

 

제가 사용하는 버전은 2.3.1 버전입니다.

코드가 너무 길어서 일부 코드만 올렸습니다.

코드는 아래와 같습니다.

 

 

static Evas_Object *_get_name_content(void *data, Evas_Object *obj, const char *part)
{

    profile_view_data *view_data = (profile_view_data *)data;

    Evas_Object *box = elm_box_add(obj);
 elm_bg_color_set(box, 255, 255, 255);
    elm_box_horizontal_set(box, EINA_TRUE);
    elm_box_align_set(box, 0.0, 0.5);
    elm_box_padding_set(box, BOX_PADDING, 0);
    evas_object_show(box);

    Evas_Object *label = elm_label_add(box);
 char buffer[STRING_SIZE + SUBJECT_CHAR_LIMIT] = {'\0'}; 
    snprintf(buffer, sizeof(buffer), "<color=#000000FF><align=center>%s<align></color>", label_name);
 elm_object_text_set(label, _(buffer));
    evas_object_show(label);


    Evas_Object *entry = elm_entry_add(box);
    elm_entry_single_line_set(entry, EINA_TRUE);
    elm_entry_scrollable_set(entry, EINA_TRUE);
    elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
    Elm_Entry_Filter_Limit_Size limit = {SUBJECT_CHAR_LIMIT, SUBJECT_BYTE_LIMIT};
    elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit);
    elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
 elm_entry_text_style_user_push(entry, "DEFAULT='align=right'");

    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);

 char guide_buffer[STRING_SIZE + SUBJECT_CHAR_LIMIT] = {'\0'}; 
    snprintf(guide_buffer, sizeof(guide_buffer), "<align=right>%s<align>", name_guide);
    elm_object_part_text_set(entry, "elm.guide", _(guide_buffer));
    evas_object_smart_callback_add(entry, "changed", _name_entry_changed_cb, view_data);
    evas_object_show(entry);

    elm_entry_entry_set(entry, view_data->name);

    elm_box_pack_end(box, label);
    elm_box_pack_end(box, entry);

    return box;
}

 

 

static Elm_Genlist_Item_Class itc_gender = {
    .item_style = "default",
    .func.text_get = _get_label_gender,
    .func.content_get = _get_content_gender,
};

 

static Evas_Object *_get_content_gender(void *item_data, Evas_Object *obj, const char *part)
{
 profile_view_data *data = (profile_view_data *)item_data;


 if(strcmp(part, "elm.swallow.end") == 0)
 {
  Evas_Object *box = elm_box_add(obj);
  elm_box_horizontal_set(box, EINA_TRUE);
  evas_object_show(box);

  double gender = 0.0;   //0 : male, 1: female
  //data->gender = gender;

  data->gender_btn = elm_spinner_add(box);
  evas_object_show(data->gender_btn);
  elm_spinner_editable_set(data->gender_btn, EINA_FALSE);
  elm_spinner_min_max_set(data->gender_btn, 0, 1);
  

  elm_spinner_special_value_add(data->gender_btn, 0, "Male");
  elm_spinner_special_value_add(data->gender_btn, 1, "Female");
  elm_spinner_wrap_set(data->gender_btn, EINA_TRUE);
  
  
  evas_object_size_hint_align_set(data->gender_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
  evas_object_size_hint_weight_set(data->gender_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
  evas_object_size_hint_max_set(data->gender_btn, ELM_SCALE_SIZE(BUTTON_SCALE_DATETIME_WIDTH), ELM_SCALE_SIZE(BUTTON_SCALE_HEIGHT));
  evas_object_smart_callback_add(data->gender_btn, "changed", spinner_changed_cb, NULL);
  evas_object_smart_callback_add(data->gender_btn, "delay,changed", spinner_delay_changed_cb, NULL);
  
  elm_box_pack_end(box, data->gender_btn);
  
  
  return box;
  
 }

 return NULL;
}

 

static Elm_Genlist_Item_Class itc_type = {
    .item_style = "default",
    .func.content_get = _get_content_type,
};

 

static Evas_Object *_get_content_type(void *item_data, Evas_Object *obj, const char *part)
{
 objective_view_data *data = (objective_view_data *)item_data;


 if(strcmp(part, "elm.swallow.end") == 0)
 {
  Evas_Object *box = elm_box_add(obj);
  elm_box_horizontal_set(box, EINA_TRUE);
  evas_object_show(box);

  double type = 0.0; //0 : diet 1: Bulkup
  //data->type = type;

  data->type_btn = elm_spinner_add(box);
  evas_object_show(data->type_btn);
  elm_spinner_editable_set(data->type_btn, EINA_FALSE);
  elm_spinner_min_max_set(data->type_btn, 0, 1);
  

  elm_spinner_special_value_add(data->type_btn, 0, "For Diet");
  elm_spinner_special_value_add(data->type_btn, 1, "For Bul-up");
  elm_spinner_wrap_set(data->type_btn, EINA_TRUE);
  
  
  evas_object_size_hint_align_set(data->type_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
  evas_object_size_hint_weight_set(data->type_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
  evas_object_size_hint_min_set(data->type_btn, ELM_SCALE_SIZE(BUTTON_SCALE_DATETIME_WIDTH), ELM_SCALE_SIZE(BUTTON_SCALE_HEIGHT));
  evas_object_smart_callback_add(data->type_btn, "changed", spinner_changed_cb, NULL);
  evas_object_smart_callback_add(data->type_btn, "delay,changed", spinner_delay_changed_cb, NULL);
  
  elm_box_pack_end(box, data->type_btn);
  
  
  return box;
  
 }

 return NULL;
}