1

我想更改 RichTextEditor 工具栏中按钮的字体特征,但我希望它们与我的应用程序中的其他按钮不同。有没有办法只用 CSS 来做到这一点?我知道我可以在必要时使用 setStyle 来做到这一点......

4

2 回答 2

1

由于 RichTextEditor 的子组件在 MXML 中声明并因此可以公开访问,因此一种方法是styleName在运行时单独分配它们的属性(在容器的creationComplete事件触发后,确保编辑器及其所有子组件都已创建) ,像这样:

<mx:Style>

    .myRTECombo
    {
        color: #FF0000;
    }

</mx:Style>

<mx:Script>
    <![CDATA[

        private function creationCompleteHandler(event:Event):void
        {
            rte.fontFamilyCombo.styleName = "myRTECombo";
            rte.fontSizeCombo.styleName = "myRTECombo";
        }

    ]]>
</mx:Script>

<mx:RichTextEditor id="rte" />

Flex 文档不会按 ID 调用子组件(“boldButton”、“fontSizeCombo”等),但组件的源代码可供查看,因此您应该能够从源代码中获取所需的所有信息本身。由于我使用FlexBuilder,所以我通常使用Eclipse Ctrl+click快捷方式,在标签/类名上,跳转到关联的类定义文件,但你也可以直接在[installDir]/sdks/[version]打开源文件]/frameworks/src/mx/RichTextEditor.mxml 自己看看。

我敢肯定还有其他方法(setStyle作为一种方法,尽管出于性能原因通常不鼓励明确使用它),但这应该适合您。但是,当您深入研究组件的源代码时,需要注意的一点是,默认按钮集中的许多按钮实际上使用的是 PNG(例如,icon_style_bold.png),而不是文本,这就是我的示例包含参考的原因改为 ComboBox,这样您就可以看到颜色更改是如何应用的;如果您想更改按钮的外观,请注意它们使用的是 styleableicon属性,而不是 font-style 设置,用于他们的外观和感觉。

希望能帮助到你!

于 2009-02-01T20:58:10.307 回答
0

谢谢@Christian Nunciato!这是我的最终代码,在我的 RichTextEditor 组件中(扩展它)。在creationComplete中,我称之为

private function setUpStyleNames():void {
    setUpStyleNamesInner(toolbar.getChildren());
    setUpStyleNamesInner(toolBar2.getChildren());
}

private function setUpStyleNamesInner(children:Array):void {
    for each (var child:DisplayObject in children) {
        if (child is UIComponent) {
            UIComponent(child).styleName = "rteInnards";
        }
    }
}

然后在我的样式表中,我有这个

.rteInnards {
    color: #FF0000;
    fontSize: 25px;
}

惊人的。再次感谢!

于 2009-02-01T21:54:26.607 回答