Edje:如何定义一个 "fixed" 大小组?
Edje: how to define a "fixed" size group?
我在 Edje 中有这样的布局:
group {
name: "mylayout";
min: 200 200;
parts {
rect { "elm.bg";
scale: 0;
desc { "default";
visible: 1;
fixed: 1 1;
color: 255 0 0 255;
min: 200 200;
}
}
text { "elm.title";
scale: 0;
desc { "default";
text {
text: "Title";
size: 32;
}
}
}
}
}
我想将此布局中的 2 个放入 框,但我希望它们全部为“全尺寸”,即我想要一个可滚动的框。
现在,如果我将这些布局放入一个框中,该框会调整它们的大小以适合一个屏幕。
如果我只在框中添加一个:
但是如果我加两个:
我使用以下代码将它们添加到框中:
Evas_Object* page = elm_layout_add(box);
elm_layout_file_set(page, "file.edj", "mylayout");
evas_object_size_hint_align_set(page, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(page, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(page);
elm_box_pack_end(box, page);
如何强制盒子只包含其原始大小的元素?
OS: Tizen 4.0.
https://www.enlightenment.org/develop/legacy/program_guide/edje/basic_concepts
fixed参数表示这个部分大小是固定的,所以不管全局大小是多少,
该零件将显示为它自己的尺寸。
所以如果你设置 fixed 参数,这部分的最小大小不会影响对象大小。
我认为您必须先删除 fixed 参数。
现在我们要谈谈大小提示 align 和 weight。
hint align 表示此内容对象必须在给定区域中对齐的位置。
你可以很容易地认为 0 是 top/left 0.5 是中间,1.0 是 bottom/right。
但预定义值 FILL(-1) 表示在给定区域填充内容对象。
hint align表示这个对象在父区域中有多少权重。
所以如果盒子里有两件物品,一件重量为 4,一件重量为 6,
第一个只能有 0.4 个盒子的面积,第二个可以有 0.6 个面积。
请在 link 中查看更多详细信息。
这是我的测试代码。
- 删除固定参数和最小组(我添加大纲以检查对象的确切位置。如果您可以使用以前的代码删除固定参数和最小组。)
group {
name: "mylayout";
parts {
rect { "outline";
desc { "default";
visible: 1;
color: 0 0 0 255;
min: 200 200;
}
}
rect { "elm.bg"
desc { "default";
visible: 1;
color: 255 0 0 255;
rel.to: "outline";
rel1.offset: 1 1;
rel2.offset: -2 -2;
}
}
text { "elm.title";
scale: 0;
desc { "default";
text {
text: "Title";
size: 32;
}
}
}
}
}
- 对齐和粗细随心所欲。 Expand 是 1 的同义词。
Evas_Object *win, *bx;
char buf[PATH_MAX];
win = elm_win_util_standard_add("box-vert", "Box Vert");
elm_win_autodel_set(win, EINA_TRUE);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
Evas_Object* ly = elm_layout_add(bx);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "mylayout");
evas_object_size_hint_align_set(ly, 0.5, 0.5);
evas_object_size_hint_weight_set(ly, 1, 1);
evas_object_show(ly);
elm_box_pack_end(bx, ly);
Evas_Object* ly2 = elm_layout_add(bx);
elm_layout_file_set(ly2, buf, "mylayout");
evas_object_size_hint_align_set(ly2, 0.5, 0.5);
evas_object_size_hint_weight_set(ly2, 1, 1);
evas_object_show(ly2);
elm_box_pack_end(bx, ly2);
evas_object_show(win);
evas_object_resize(win, 360, 360);
如果您有更多问题,请在这里回复! :)
我在 Edje 中有这样的布局:
group {
name: "mylayout";
min: 200 200;
parts {
rect { "elm.bg";
scale: 0;
desc { "default";
visible: 1;
fixed: 1 1;
color: 255 0 0 255;
min: 200 200;
}
}
text { "elm.title";
scale: 0;
desc { "default";
text {
text: "Title";
size: 32;
}
}
}
}
}
我想将此布局中的 2 个放入 框,但我希望它们全部为“全尺寸”,即我想要一个可滚动的框。
现在,如果我将这些布局放入一个框中,该框会调整它们的大小以适合一个屏幕。
如果我只在框中添加一个:
但是如果我加两个:
我使用以下代码将它们添加到框中:
Evas_Object* page = elm_layout_add(box);
elm_layout_file_set(page, "file.edj", "mylayout");
evas_object_size_hint_align_set(page, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(page, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(page);
elm_box_pack_end(box, page);
如何强制盒子只包含其原始大小的元素?
OS: Tizen 4.0.
https://www.enlightenment.org/develop/legacy/program_guide/edje/basic_concepts
fixed参数表示这个部分大小是固定的,所以不管全局大小是多少, 该零件将显示为它自己的尺寸。
所以如果你设置 fixed 参数,这部分的最小大小不会影响对象大小。 我认为您必须先删除 fixed 参数。
现在我们要谈谈大小提示 align 和 weight。
hint align 表示此内容对象必须在给定区域中对齐的位置。 你可以很容易地认为 0 是 top/left 0.5 是中间,1.0 是 bottom/right。 但预定义值 FILL(-1) 表示在给定区域填充内容对象。
hint align表示这个对象在父区域中有多少权重。 所以如果盒子里有两件物品,一件重量为 4,一件重量为 6, 第一个只能有 0.4 个盒子的面积,第二个可以有 0.6 个面积。
请在 link 中查看更多详细信息。
这是我的测试代码。
- 删除固定参数和最小组(我添加大纲以检查对象的确切位置。如果您可以使用以前的代码删除固定参数和最小组。)
group {
name: "mylayout";
parts {
rect { "outline";
desc { "default";
visible: 1;
color: 0 0 0 255;
min: 200 200;
}
}
rect { "elm.bg"
desc { "default";
visible: 1;
color: 255 0 0 255;
rel.to: "outline";
rel1.offset: 1 1;
rel2.offset: -2 -2;
}
}
text { "elm.title";
scale: 0;
desc { "default";
text {
text: "Title";
size: 32;
}
}
}
}
}
- 对齐和粗细随心所欲。 Expand 是 1 的同义词。
Evas_Object *win, *bx;
char buf[PATH_MAX];
win = elm_win_util_standard_add("box-vert", "Box Vert");
elm_win_autodel_set(win, EINA_TRUE);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
Evas_Object* ly = elm_layout_add(bx);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "mylayout");
evas_object_size_hint_align_set(ly, 0.5, 0.5);
evas_object_size_hint_weight_set(ly, 1, 1);
evas_object_show(ly);
elm_box_pack_end(bx, ly);
Evas_Object* ly2 = elm_layout_add(bx);
elm_layout_file_set(ly2, buf, "mylayout");
evas_object_size_hint_align_set(ly2, 0.5, 0.5);
evas_object_size_hint_weight_set(ly2, 1, 1);
evas_object_show(ly2);
elm_box_pack_end(bx, ly2);
evas_object_show(win);
evas_object_resize(win, 360, 360);
如果您有更多问题,请在这里回复! :)