如何在Spark TextArea中的每行文本下显示一行

时间:2012-01-30 23:00:11

标签: flex flex4 flex-spark

我正在尝试在Spark TextArea中的每行文本下面显示一条水平线。我想给文本区域看法律文件。

2 个答案:

答案 0 :(得分:2)

为控件设置textDecoration样式。

答案 1 :(得分:2)

实际上,在Flex 3中遇到了一个类似的问题,为一个禁用的链接按钮执行删除操作,这是我们样式的一部分。刚查看代码并查看了spark标签的文档,发现我从mx标签中使用的函数明确表示它不起作用[来自spark标签中的measureText()]:

  

测量指定的文本,假设它显示在一个   使用UITextFormat的单行UITextField(或UIFTETextField)   由这个UIComponent的样式决定。不适用于Spark   组件,因为它们不使用UITextField(或UIFTETextField)。至   测量Spark组件中的文本,获取a的测量值   spark.components.Label或spark.components.RichText

所以我重新想出来了:

<?xml version="1.0" encoding="utf-8"?>
<s:Label xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Script>
        <![CDATA[
            override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void
            {
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                drawLines();
            }

            private function drawLines() : void
            {
                var totalHeight : Number = 0;
                for (var i : int = 0; i < mx_internal::textLines.length; i++)
                {

                    totalHeight = mx_internal::textLines[i].y;
                    graphics.lineStyle(1, 0x000000);
                    graphics.moveTo(0, totalHeight);
                    graphics.lineTo(width, totalHeight);
                }
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
</s:Label>