如何使用 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
};
使用 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
};