我想创建一个文本字段扩展名: 设置宽度时,会根据文本内容自动调整高度。通过自动调整左边轻松完成,自动换行,多线真实。 设置高度时,会根据文本内容自动调整宽度。 这是我的问题。
当宽度和高度设置都不是我感兴趣的情况时。
我在互联网上尝试了几件事,我很难过。
答案 0 :(得分:1)
不是最优雅的解决方案,但它应该有效:
function setHeight(newHeight:Number):void {
myTextField.height = newHeight;
while(myTextField.textHeight > myTextField.height) {
myTextField.width += 100;
}
}
答案 1 :(得分:1)
通用解决方案是不可能的,就好像文本字段包含太多要在给定高度内显示的换行符一样,无论您指定的宽度如何,文本字段都将无法显示所有行。部分解决方案是通过绿化提出的,但缺乏应该注意的一些功能。首先,无论您做什么,都不应将高度设置为小于字体高度的值,否则文本字段将无法显示单行。其次,如果wordWrap
设置为false,multiline
设置为true,则结果textWidth
是文本字段所需的最大宽度,因此如果您调整宽度,请按照绿化建议,停止一旦达到记录的textWidth
,进一步增加是毫无意义的。
function setHeight(newHeight:Number):void {
var tw:Number;
var th:Number;
if (myTextField.wordwrap) {
myTextField.wordwrap=false;
tw=myTextField.textWidth;
th=myTextField.textHeight;
myTextField.wordwrap=true;
} else {
tw=myTextField.textWidth;
th=myTextField.textHeight;
}
if (newHeight<th) newHeight=th+2; // as below
myTextField.height = newHeight;
while((myTextField.textHeight > myTextField.height)&&(myTextField.width<tw)) {
myTextField.width += 100;
}
if (myTextField.width>tw) myTextField.width=tw+2; // "2" depends on text format
// and other properties, so either play with it or assume a number big enough
}