【问题标题】:Can I create LinkButtons that wrap like textfields?我可以创建像文本字段一样换行的链接按钮吗?
【发布时间】:2010-03-25 19:13:17
【问题描述】:

我基本上想通过循环链接按钮而不是制作文本字段来让事情变得更容易,因为链接按钮已经编程了翻转。

但我有很多文字,而且还在继续。我希望它可以像使用文本字段一样换行。

谢谢

package {
 import mx.controls.LinkButton;
 import flash.text.TextLineMetrics;

 public class multiLineLinkButton extends LinkButton {
      override protected function createChildren():void {
           super.createChildren();
           if (textField){
                textField.wordWrap = true;
                textField.multiline = true;

           }
      }

      override public function measureText(s:String):TextLineMetrics {
           textField.text = s;
           var lineMetrics:TextLineMetrics = textField.getLineMetrics(0);
           lineMetrics.width = 700;
           lineMetrics.height = textField.textHeight;


           return lineMetrics;
      }
 }

}

这是组件,但就像我说的那样,一切都自动居中。

我试过 paddingLEFT =0;并尝试 setStyle("paddingLEFT", 0);但这些方法不起作用。

var test:multiLineLinkButton = new multiLineLinkButton();

        test.label = "sdfdsfdsfdsfsdfsdfsdfdsfsdfdsfdsdsfdsfdsfdffsdfdsfdfdsfdsfdsfdsfdsfdsfsdfdsfdfdsfdfdsfdsfsdfsdfsdf";
        test.setStyle("textAlign","left");

        var metrics:TextLineMetrics = measureText(test.label);

        trace(metrics.height);
        myCanvas.addChild(test);

所以 metrics.height 给了我 14 的高度,我相信它是单行,即使它换行了。

【问题讨论】:

  • 让我们看看 multiLineLinkBut​​ton 类背后的代码,这就是我们解决身高问题的方法。
  • 抱歉,上面的第一段代码是multiLineLinkBut​​ton。
  • 呃,我应该看到的。所以这就是你要做的。 1)给你的文本字段一个名字。 2) 编写一个公共函数,将其命名为 getHeight()。 3) 让该函数返回带有 getchildbyname 的文本字段的高度。现在您有了一个可以从主应用程序调用的函数,该函数将返回您要查找的高度。
  • 所以我在我的自定义组件文件中创建了一个名为 getHeight 的函数。一个不是“textField”的文本字段名称吗?两个不会返回 textField.measuredHeight 给我高度?抱歉,我不知道该怎么做?
  • 组件中的 textField.textHeight 在首次运行时也会给出不正确的高度。但是当你翻转链接时,你会得到正确的高度......我只是困惑

标签: apache-flex


【解决方案1】:

这个人做到了: http://ooine.com/index.php/2009/10/12/flex-linkbutton-word-wrap/

仅供参考,这是搜索词“flex linkBut​​ton word wrap”在 Google 上的第一次点击

【讨论】:

  • 谢谢。这让我想到了另一个问题。你如何利用脚本标签/动作脚本中的组件
  • 知道了 var hey:multiLineLinkBut​​ton = new multiLineLinkBut​​ton();谢谢
  • 我尝试了代码,它有点工作。由于某种原因,文本的边界大约是 50 像素宽。我增加了 .width 但它所做的只是增加了翻转框的宽度而不是实际的文本。
  • var lineMetrics:TextLineMetrics = textField.getLineMetrics(0); lineMetrics.width = 700; lineMetrics.height = textField.textHeight;我刚刚添加了自己的 700 宽度......但现在我如何让它与 LEFT 对齐,自动调整大小不适合我
  • 对齐是一种样式,因此在 mxml 中它将是 textAlign="left" 在 AS 中它将是 setStyle("textAlign","left"); 堆栈溢出提示:在 cmets 中,您可以使用刻度线( [1] 键旁边的小标记通常共享~。至少在美国键盘上是这样的
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 2018-12-07
  • 2021-07-19
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 2014-11-15
相关资源
最近更新 更多