Как написать двухстрочный текст в метке кнопки? - PullRequest
1 голос
/ 09 марта 2011

Есть ли способ для поля "label" кнопки отображать текст в несколько строк? Или же автоматически «обернуть» текст в несколько строк вместо того, чтобы вырезать его часть?

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Это невозможно сделать со стандартным mx: Button - вы можете создать свой собственный компонент для расширения Button или искать другие, которые уже создали то, что вам нужно.

Например, библиотека flexlib содержит CanvasButton, который поможет: http://flexlib.googlecode.com/svn/trunk/docs/flexlib/controls/CanvasButton.html

Или, если вы предпочитаете сделать это самостоятельно и создать свой собственный компонент, этот пост в блоге покажет вам, как: http://www.forestandthetrees.com/2008/03/11/flex-multiline-button/

1 голос
/ 09 марта 2011

Если вы используете Flex 4, вы можете использовать этот компонент:

WrappingButton.as

package 
{
  import flash.text.TextFieldAutoSize;
  import mx.controls.Button;

  public class WrappingButton extends Button
  {

    public function WrappingButton()
    {
      super();
    }

    override protected function createChildren():void
    {
      super.createChildren();

      textField.multiline = true;
      textField.wordWrap = true;
      textField.autoSize = TextFieldAutoSize.CENTER;
    }

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
      super.updateDisplayList(unscaledWidth, unscaledHeight);
      textField.y = (this.height - textField.height) >> 1;

      height = textField.height + getStyle("paddingTop") + getStyle("paddingBottom");
      if (height < this.minHeight)
      {
        this.height = this.minHeight
      }
    }
  }
}
0 голосов
/ 10 марта 2011

Если вы используете Flex 4, используйте кнопку s: и создайте для него собственный скин. Внутри кожи вы увидите

...