【问题标题】:How to change width of TAB character in a Flex TextArea?如何更改 Flex TextArea 中 TAB 字符的宽度?
【发布时间】:2010-06-30 15:24:25
【问题描述】:

是否可以更改 Flex TextArea 中插入 TAB 字符的宽度?

我正在捕获FocusEvent.KEY_FOCUS_CHANGE 事件并手动将"\t" 插入到使用嵌入式等宽字体样式的文本区域中。默认情况下,TAB 显示两个半等宽字符宽...我需要它们显示五个等宽字符宽。

关于如何做到这一点的任何想法?

【问题讨论】:

  • 是否可以选择使用 Flex4 RichEditableText?
  • 这不是操作系统特定的东西吗?或者可能与字体有关。我不希望任何 Flash API 允许您更改这一点。
  • @Marty - 感谢您的建议。不幸的是,我的日程安排很紧,因此与 Flex 3 相关。@www.Flextras.com - 我尝试创建一个 5 个字符宽的自定义字体字形,但文本区域似乎不喜欢那样。我希望在 AS 中有所作为。

标签: apache-flex flash actionscript-3 text textarea


【解决方案1】:

这样的事情呢?

<mx:Canvas>
    <mx:Script>
        [Bindable]
        public var myText:String;
    </mx:Script>
    <mx:TextArea id="textArea" text="{TabUtil.expand(myText)}" valueCommit="myText = TabUtil.contract(myText))" />
 </mx:Canvas>



  public class TabUtil
  {
       public static const SPACE:String = "     "; // Five spaces;
       public static function expand(text:String):String
       {
            return text.replace("\t",SPACE);
       }
       public static function contract(text:String):String
       {
            return text.replace(SPACE,"\t");
        }
   }

我忘记了替换的参数,但我认为它可能需要一个正则表达式,在这种情况下,您需要调整上述内容。但它应该可以工作。

【讨论】:

    【解决方案2】:

    textFormat 的 tabStops 属性就是您要找的。您可以设置每个选项卡放置位置的像素值。

    var tf:TextFormat = new TextFormat(); tf.tabStops = [100, 200, 300, 400]; myTextArea.mx_internal::getTextField().defaultTextFormat = tf;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-26
      • 2015-05-13
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2016-12-16
      • 1970-01-01
      相关资源
      最近更新 更多