如果更长,则强制居中对齐的文本左对齐

问题描述

一个 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代码实现,但可能更复杂。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...