Tizen:设置EDC文件中组中零件的文本



我正在尝试为Tizen平台编写一个小部件。小部件的布局在EDC文件中进行了描述。我需要一个包含一些文本和图像部分的块,用不同的文本标签重复三次。因此,我决定需要创建一个包含所需零件的group,并将其用作box零件中的item

group {
name: "list_item";
parts {
part {
name: "label1";
type: "TEXT";
description { ...  }
}
part {
name: "label2";
type: "TEXT";
description { ... }
}
}
}
group {
name: "content";
parts {
part {
name: "list";
type: "BOX";
box {
items {
item {
type: "GROUP";
name: "item1";
source: "list_item";
}
item {
type: "GROUP";
name: "item2";
source: "list_item";
}
item {
type: "GROUP";
name: "item3";
source: "list_item";
}
}
}
description { ... }
}
}
}

对于放置在主布局组content中的静态文本部分,我使用elm_object_part_text_set(wid->content, part_name, text)(语言为C,btw(,但不知道如何设置list_item的每个实例的label1部分的文本。

用燕子代替group怎么样?

当使用EDC创建复杂布局时,可以通过使用燕子轻松实现。

在c代码中,可以将elm_label设置为吞咽内容。

您还可以设置内容,在框中添加2个elm_labels后吞下该框

或者,您可以创建一个更复杂的布局,并将布局设置为燕子中的内容。(就像你的小组"list_item"(。

在EDC:中

group { "list";
parts {
swallow { "item1";
desc { "default";
...
}
}
swallow { "item2";
desc { "default";
...
}
}
swallow { "item3";
desc { "default";
...
}
}
}
}

在C代码中:

/* ex 1 */
elm_object_part_content_set(layout, "item1", label1);
elm_object_part_content_set(layout, "item2", label2);
elm_object_part_content_set(layout, "item2", label3);
/* ex */
elm_box_pack_end(box, label1);
elm_box_pack_end(box, label2);
elm_object_part_content_set(layout, "item1", box);
/* ex 3 */
elm_object_part_text_set(list_item, "label1", "Text 1 ...");
elm_object_part_text_set(list_item, "label2", "Text 2 ...");
elm_object_part_content_set(layout, "item1", list_item);

我找到了一个解决方案。我不确定它是否正确,但它有效。

// widget_instance_data_s *widget_instance
// Get part by name as object
Evas_Object *evas_list = (Evas_Object*) edje_object_part_object_get(elm_layout_edje_get(widget_instance->content), "list");
// Get items of box
Eina_List *items = evas_object_box_children_get(evas_list);
int items_count = eina_list_count(items);
for (i = 0; i < items_count; i++) {
list_item = (Evas_Object *) eina_list_nth(items, i);
// item1, item2, ...
item_name = evas_object_name_get(list_item);
...
edje_object_part_text_set(list_item, "label1", str);
}

相关内容

  • 没有找到相关文章