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 参数。

现在我们要谈谈大小提示 alignweight

hint align 表示此内容对象必须在给定区域中对齐的位置。 你可以很容易地认为 0 是 top/left 0.5 是中间,1.0 是 bottom/right。 但预定义值 FILL(-1) 表示在给定区域填充内容对象。

hint align表示这个对象在父区域中有多少权重。 所以如果盒子里有两件物品,一件重量为 4,一件重量为 6, 第一个只能有 0.4 个盒子的面积,第二个可以有 0.6 个面积。

请在 link 中查看更多详细信息。

这是我的测试代码。

  1. 删除固定参数和最小组(我添加大纲以检查对象的确切位置。如果您可以使用以前的代码删除固定参数和最小组。)

   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;
              }
           }
        }
     }
   }
  1. 对齐和粗细随心所欲。 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);

如果您有更多问题,请在这里回复! :)