0

我想创建一个文本字段扩展:设置宽度时,根据文本内容自动调整高度。通过 autosize left、word wrap true、multiline true 轻松完成。设置高度时,根据文本内容自动调整宽度。这是我的问题。

当宽度和高度都不是我感兴趣的情况时。

我在网上尝试了几件事,我很难过。

4

2 回答 2

1

不是最优雅的解决方案,但它应该可以工作:

function setHeight(newHeight:Number):void {
  myTextField.height = newHeight;

  while(myTextField.textHeight > myTextField.height) {
    myTextField.width += 100;
  }
}
于 2013-07-31T22:40:51.453 回答
1

一般的解决方案是不可能的,好像文本字段包含太多换行符而无法在给定高度内显示,无论您分配什么宽度,文本字段都将无法显示所有行。Greetification 提供了部分解决方案,但它缺少一些应该注意的功能。首先,无论你做什么,你都不应该将高度设置为小于字体高度的值,否则文本字段将无法显示单行。其次,如果wordWrap设置为 false 和multilinetrue,则结果textWidth是您的文本字段的最大理想宽度,因此,如果您像 greetification 建议的那样调整宽度,则在达到记录后停止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
}
于 2013-08-01T04:40:01.217 回答