Flex-使用CSS自定义组件内部使用的滚动条



我要做的是仅当滚动条显示在特定组件内时才自定义滚动条的外观。我不想更改应用程序中所有其他滚动条的外观。

我有一个面板,在这个面板里面有一个VBox,滚动条出现在这个VBox里面,我只想使用CSS来设置滚动条的样式。

我试着在我的组件中添加这样的东西(一个测试只是为了删除滚动条的上下箭头):

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    s|Scroller
    {
    up-arrow-skin: ClassReference("undefined");
    down-arrow-skin: ClassReference("undefined");
    }
</fx:Style>

结果是一个警告,上面写着:

CSS type selectors are not supported in components: 'spark.components.Scroller'

我搜索了一下,发现我应该在组件中使用类选择器,而不是类型选择器,但我不想创建自定义滚动条(我应该如何使用它?)。

编辑:我添加了一个测试CSS类选择器的代码示例:

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    @namespace mx "library://ns.adobe.com/flex/mx";
    .noArrowsScroller
    {
    up-arrow-skin: ClassReference("undefined");
    down-arrow-skin: ClassReference("undefined");
    }

</fx:Style>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:VBox width="100%" height="100%" paddingBottom="20" paddingLeft="20" paddingRight="20" paddingTop="20"
         horizontalAlign="center" verticalAlign="middle">

    <s:BorderContainer borderWeight="1" width="100%" height="100%" borderColor="0x79A8BD">
        <mx:VBox width="100%" height="100%" id="generalVBox" horizontalAlign="center"
                 minHeight="0" horizontalScrollPolicy="off">
        </mx:VBox>
    </s:BorderContainer>
</mx:VBox>  

vbox"generalVBox"是我希望自定义滚动条出现在其中的一个。

在该vBox中,在运行时添加了几个组件,这些组件可能会导致出现滚动条。

我应该如何将"noArrowsScroller"类选择器应用于它?

编辑2:在Sunil发表评论后,我尝试放置一个Scroller组件来包装VGroup容器,并使用一个名为"noArrowsScrollbar"的类选择器,但滚动条样式保持不变我还尝试在类选择器中设置颜色,并且该属性有效,所以可能我使用了错误的CSS属性?

<?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/mx" width="100%"     height="100%"
           creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
    <![CDATA[
        import mx.controls.Label;
        import mx.controls.LinkButton;
        import mx.events.FlexEvent;

        protected function application1_creationCompleteHandler(event:FlexEvent):void
        {
            if(v != null)
            {
                for(var i:int = 0; i < 100; i++)
                {
                    var lbl:Label = new Label();
                    lbl.text = String(i);
                    v2.addElement(lbl);
                }
            }
        }
    ]]>
</fx:Script>
<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    @namespace mx "library://ns.adobe.com/flex/mx";
    .noArrowsScroller
    {
        down-arrow-skin: ClassReference("undefined");
        up-arrow-skin: ClassReference("undefined");
        color: red;
    }

</fx:Style>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<s:Panel width="50%" height="50%">
    <s:Scroller styleName="noArrowsScroller"
                 focusEnabled="false"
                 hasFocusableChildren="true"
                 height="100%"
                 horizontalCenter="0" verticalCenter="0">
        <s:VGroup width="100%" height="100%" id="v2" minHeight="0">
        </s:VGroup>
    </s:Scroller>
</s:Panel>

感谢

组件中不允许使用CSS类型选择器。。您所能做的就是:使用类选择器,或者尝试将其放在MXML中的根级CSS中。

现在您正在使用ScrollerVGroup,您只需要修复用于取消设置/删除元素的语法:

试试这个:

.noArrowsScroller
{
        down-arrow-skin: ClassReference(null);
        up-arrow-skin: ClassReference(null);
}

相关内容

  • 没有找到相关文章