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

时间:2016-06-22 08:54:17

标签: dynamic fonts 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
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

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

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