代码之家  ›  专栏  ›  技术社区  ›  davr

在运行时将flex组件宽度设置为100%?

  •  9
  • davr  · 技术社区  · 17 年前

    如果我正在创建,请通过 MXML ,我可以将宽度设置为 100% . 但我似乎不能在运行时通过actionscript来完成这项工作。

    这工作:

    <mx:TextInput ... width="100%" />
    

    这不会编译,表示宽度是数字,而不是字符串:

    var textinp:TextInput = new TextInput();
    someContainer.addChild(textinp);
    textinp.width = "100%"
    

    如何设置 100% 作为运行时通过actionscript创建的组件的大小?

    4 回复  |  直到 17 年前
        1
  •  23
  •   davr    17 年前

    你只需要使用 percentWidth 属性,而不是 width 属性。

    所以,代码中的第三行是:

    textinp.percentWidth = 100;
    

    我也被这个绊倒了一阵子。

        2
  •  10
  •   Daniel Brockman    17 年前

    如果以后要切换回同一组件的基于像素的宽度,请执行以下操作:

    textinp.percentWidth = NaN;
    
        3
  •  3
  •   Sophistifunk    17 年前

    以上答案是正确的,但我不能对此发表评论,因为我太新了。

    如果要将此功能添加到自定义组件中,可以执行以下操作:

    [PercentProxy("percentMultiplier")]
    public function set multiplier(value:Number):void
    {
      _multiplier = value;
      invalidSomethingOrDoSomething();
    }
    
    public function set percentMultiplier(value:Number):void
    {
      multiplier = value / 100;
    }
    

    当然,当您为width执行此操作时,容器子类正在查找 百分比宽度 不要检查Metada,所以不要叫它 宽度百分比 或者别的什么,尽管你可以。

        4
  •  1
  •   Adrian Pirvulescu    17 年前

    答案如下:

    var textinp:TextInput = new TextInput();
    someContainer.addChild(textinp);
    textinp.percentWidth = 100;