如何解决如果更长,则强制居中对齐的文本左对齐
有一个 text
部分,基本上居中对齐。
text { "elm.text";
scale: 1;
clip_to: "elm.clipper";
desc { "default";
visible: 1;
rel1.to: "elm.clipper";
rel2.to: "elm.clipper";
align: 0 0.5; //NOT WORKING
text {
text: "elm.text very very very long";
size: 24;
align: 0.5 0.5;
ellipsis: -1;
}
}
居中对齐有效,但如果文本比容器长,我希望该文本左对齐。
我不想使用 min
,因为它会破坏我的布局。
我也不想使用任何脚本,因为它会破坏用户体验。
解决方法
有什么理由不使用省略号吗?
我认为,省略号:0;是最简单的方法。
如果不是,则需要创建另一个状态并根据情况进行STATE_SET。
text { "elm.text";
scale;
clip_to: "elm.clipper";
desc { "default";
vis;
rel.to: "elm.clipper";
align: 0.0 0.5;
text {
text: "elm.text text"; // for short text
size: 24;
align: 0.5 0.5;
ellipsis: 0;
}
}
desc { "left_align"; // for long text
inherit: "default" 0.0;
text.align: 0.0 0.5;
}
}
,
我认为你应该使用脚本。
但你不想要它。对吗?
我不知道其他任何方法,但我会在下面分享方法。
首先设置“min:1 1;”到文本(文本部分随着文本的长度增加。)
in script :
public text_len = 0;
public clipper_len = 0;
...
public set_align() {
new x,y,w,h;
get_geometry(PART:"elm.text",x,h);
set_int(text_len,w);
get_geometry(PART:"elm.clipper",h);
set_int(clipper_len,w);
if (get_int(text_len) > get_int(clipper_len)) {
run_program(PROGRAM:"set_left");
}
else {
run_program(PROGRAM:"set_center");
}
}
同样的逻辑可以用c代码实现,但可能更复杂。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。