css - 在 Flex 4 中圆化 DateField 的 Angular ?

标签 css apache-flex skinning datefield

我正在使用带有 flex 4 sdk 的 Flash 构建器,并尝试创建一个 DateField,其中 TextInput 组件具有圆 Angular 。

我已经尝试了以下不起作用的代码:

<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768"
    xmlns:components="components.*">

    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/halo";
        @namespace components "components.*";

        .roundedTI
        {
            corner-radius: 10;
            borderStyle: solid;   
        }

    </fx:Style>

    <mx:DateField textInputStyleName="roundedTI"/> 

</s:Application>

社区能否帮助我纠正我的代码中的任何可见错误,或者向我指出演示如何执行此操作的替代指南或教程?

最佳答案

有了 Flex 4,一切都在皮肤中。 CSS 主要用于将一种外观应用于组件或组件类,而在 Flex 3 中,它用于设置大量属性。然而,很酷的是,您可以在 CSS 中定义任意样式属性值,并且可以通过皮肤中的 getStyle 访问它!

因此,它们不再具有 cornerRadius 属性。相反,您必须创建一个“DateFieldSkin”,并通过 css 选择器将其应用于您的组件。默认的 DateField 外观使用 DropDownSkin。下面是解决这个问题的代码:

日期字段皮肤:

<?xml version="1.0" encoding="utf-8"?>
<s:Skin
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark">

    <s:states>
        <s:State name="normal"/>
        <s:State name="disabled"/>
    </s:states>

    <!--- @private -->
    <s:Rect id="border" left="0" right="0" top="0" bottom="0"
        radiusX="{getStyle('cornerRadius')}" radiusY="{getStyle('cornerRadius')}">
        <s:stroke>          
            <!--- @private -->
            <s:SolidColorStroke id="borderStroke" color="0x5380D0" />
        </s:stroke>
        <s:fill>
            <!--- @private -->
            <s:SolidColor id="bgFill" color="0xFFFFFF"/>
        </s:fill>
    </s:Rect>
</s:Skin>

示例应用:

<?xml version="1.0" encoding="utf-8"?>
<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/halo"
    minWidth="1024" minHeight="768">

    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";

        .roundedTI
        {
            corner-radius: 10;
            borderStyle: solid;
            borderSkin: ClassReference("DateFieldSkin");
        }

    </fx:Style>

    <mx:DateField textInputStyleName="roundedTI"/>

</s:Application>

您还可以将半径值硬编码到皮肤中,或者做一些更加动态和优化的事情。这只是一个开始。

如果可行,请告诉我, 兰斯

关于css - 在 Flex 4 中圆化 DateField 的 Angular ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264876/

相关文章:

html - 无法将背景图像显示到浏览器的全屏并使其响应

apache-flex - Flex,获取插入的 USB 设备的 USB id

javascript - 基于网络的在线图表(这些软件是如何实现的)

c# - 将皮肤应用于以编程方式创建的控件

css - 使 Web 表单字段对齐

jquery - 显示自动完成的下拉菜单不起作用

css - 为什么 last-child 不工作?

apache-flex - Linux下ActionScript3字体编译转码错误

animation - 从 FBX 加载蒙皮信息

delphi - 如何重新设计 Delphi 6 应用程序的外观?