如何使用 Appcelerator 动态设置文本字段中的字体大小?

How to set font size in a text field dynamically with Appcelerator?

使用 Alloy,我有一个文本字段,我想在用户输入超过 24 个字符时缩小字体大小,以便文本字段中的任何内容都不会被截断。

views.xml:

      <TextField  id="ccHolder" class="fieldInput"  onChange="makeFontSmaller"><Label id="cvcIcon" class="fieldIcons"/>  </TextField>

controller.js:

    function makeFontSmaller(e){
      console.log("font size " + e.source.font.fontSize); //outputs "14dp"
      if (e.source.value.length > 20) {
          e.source.font.fontSize = "12dp"; //no effect
        //$.ccHolder.value.setFont("12dp"); /no effect
    }
}

有什么想法吗?

[已编辑以更正字体对象]

在我的第一个答案编辑中,我天真地希望 font.fontSize 可以是合法的 属性,但显然不是。

然后,在 Prashant 的评论之后,我成功地测试了下面的(更详细的)解决方案,它使用 applyProperties()

function makeFontSmaller(e){
  if (e.source.value.length > 20) {
      e.source.applyProperties({font: {fontSize: "12dp"}}); 
  }
}

如果您只想更改字体,这很有效。

e.source.font = {
    fontSize : 14
};