我想更改 RichTextEditor 工具栏中按钮的字体特征,但我希望它们与我的应用程序中的其他按钮不同。有没有办法只用 CSS 来做到这一点?我知道我可以在必要时使用 setStyle 来做到这一点......
2 回答
由于 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 设置,用于他们的外观和感觉。
希望能帮助到你!
谢谢@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;
}
惊人的。再次感谢!