【问题标题】:Howto change text's style with EDC?如何使用 EDC 更改文本样式?
【发布时间】:2020-12-22 23:05:06
【问题描述】:

我想使用 EDC 更改以编程方式创建的标签的样式:

style {
  name: "list_text_title_normal";
  base: "font=Tizen:style=Bold font_size=32 color=#FF9100FF text_class=tizen ellipsis=1.0";
}

我尝试将我的 EDJ 包含在这一行中:

elm_theme_extension_add(NULL, PATH_TO_EDJ);

然后为标签应用样式:

elm_object_style_set(label, "list_text_title_normal");

但是标签不尊重风格,我该怎么做?我不想将样式定义放入 C/C++ 代码中(尽管我知道可以在文本中通过类似 HTML 的格式设置颜色和字体)。

【问题讨论】:

    标签: tizen tizen-native-app


    【解决方案1】:

    (1) style 在您的 EDC 中

    style {
      name: "list_text_title_normal";
      base: "font=Tizen:style=Bold font_size=32 color=#FF9100FF text_class=tizen ellipsis=1.0";
    }
    

    上面的样式,其实是一个Textblock Style,在EDC中是针对你EDC文件中的Textblock部分。据我所知,没有办法从 EDC 文件中获得这种风格。 如果你想在你的 EDC 中使用它,你需要添加一个组,其中包含一个带有样式的 Textblock 部分。 (注意:您不能在 elm_layout 对象上使用 elm_label API。)

    例如)在 EDC 中

    group { "my_edc_group";
       parts {
           ...
           textblock { "elm.text"; // your part name...
              desc { "default";
                 ...
                 text {
                    style: "list_text_title_normal";
                    ...
                 }
                 ...
              }
           }
           ...
       }
    }
    

    在您的 C/C++ 代码中

    Evas_Object *layout = elm_layout_add(parent);
    elm_layout_file_set(layout, YOUR_PATH_FOR_EDJ_FILE, "my_edc_group");
    elm_object_part_text_set(layout, "elm.text", "Hello World");
    

    (2) elm_object_style_set 在您的 c/c++ 代码中

    elm_object_style_set(label, "list_text_title_normal");
    

    上面的style 表示主题风格的小部件。 Tizen/EFL 中的小部件有一些预定义的主题样式集。它与您在 EDC 文件中添加的内容完全不同。在小部件中添加新的style 非常困难并且难以维护您的代码。我不建议您自定义或添加您的主题样式。

    (3) 一种不使用 EDC 的更简单方法。

    // note: You should not set ellipsis and text_class as markup tag in a text for Elm_Label widget
    // string from a file:
    // eg. "font=Tizen:style=Bold font_size=32 color=#FF9100FF"
    const char *textblockStyle = readLineFromFile(file);  // your readLineFromFile function
    Eina_Strbuf *buf = eina_strbuf_new();
    eina_strbuf_append_printf(buf, "<%s>%s", textblockStyle, text);
    elm_object_text_set(label, eina_strbuf_string_get(buf));
    eina_strbuf_free(buf);
    

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2018-10-06
      • 1970-01-01
      • 2012-02-11
      • 2013-06-25
      • 1970-01-01
      • 2011-11-03
      • 2011-03-13
      • 1970-01-01
      相关资源
      最近更新 更多