如何解决Tizen:设置EDC文件中组中零件的文本
我正在尝试为 Tizen 平台编写一个小部件。小部件的布局在 EDC 文件中描述。我需要一个包含一些文本和图像部分的块,用不同的文本标签重复三遍。所以我决定我需要创建一个包含所需部分的 group
并将其用作 item
部分中的 Box
:
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,顺便说一句),但不知道如何设置{{ label1
的每个实例的 1}} 部分。
解决方法
用swallow代替group怎么样?
在使用 EDC 创建复杂布局时,可以使用燕子轻松实现。
在c代码中,可以设置elm_label来吞掉内容。
并且你也可以在盒子里添加2个elm_labels后设置内容吞下盒子
或者您可以创建一个更复杂的布局并将布局设置为swallow 中的内容。 (例如您的群组“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,label3);
/* ex */
elm_box_pack_end(box,label1);
elm_box_pack_end(box,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,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,str);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。