繁体   English   中英

flex 4:mx |树如何禁用悬停和选择颜色?

[英]flex 4: mx|Tree how can i disable hover and selection colors?

这是与我的第一个问题相关的第二个问题:

Flex 4:mx | tree - 如何禁用项目选择?

我想禁用悬停和选择颜色,因此当用户选择项目时,它的背景不会改变颜色。 怎么可能?

更新

我不想选择选择和悬停颜色。 背景包含图像,因此无用。 我需要完全禁用颜色。

另一个更新

我试图覆盖Tree类,但没有运气。

这是覆盖树类的类:

package components.popups.WelcomeBack {
import mx.controls.listClasses.IListItemRenderer;
import mx.controls.Tree;

/**
 * @author ufk
 */
public class TreeNoSelection extends Tree {

     protected override function drawItem(item:IListItemRenderer,
                            selected:Boolean = false,
                            highlighted:Boolean = false,
                            caret:Boolean = false,
                            transition:Boolean = false):void
    {
        super.drawItem(item, false, false, false, transition);  
    }

}


}

这是我的实际树组件:

<?xml version="1.0" encoding="utf-8"?>
<WelcomeBack:TreeNoSelection xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"
     xmlns:WelcomeBack="components.popups.WelcomeBack.*" folderClosedIcon="{null}" defaultLeafIcon="{null}"
     folderOpenIcon="{null}" 
     showRoot="false"  
            allowMultipleSelection="false" allowDragSelection="false" labelField="@label">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import ItemRenderer.WelcomeBackTreeItemRenderer;
        private var _themeLibrary:Object;

        public function get themeLibrary():Object {
            return this._themeLibrary;
        }

        public function set themeLibrary(tl:Object):void {
            this._themeLibrary=tl;
            var cf:ClassFactory = new ClassFactory();
            cf.generator = ItemRenderer.WelcomeBackTreeItemRenderer;
            cf.properties = {
                _themeLibrary:this._themeLibrary
            };
            this.itemRenderer=cf;
        }

    ]]>
</fx:Script>

</WelcomeBack:TreeNoSelection>

谢谢

我有好消息和坏消息。 好消息是它真的很容易。 坏消息是你需要继承树。

package custom
{
    import mx.controls.Tree;
    import mx.controls.listClasses.IListItemRenderer;

    public class CustomTree extends Tree
    {
         protected override function drawItem(item:IListItemRenderer,
                                selected:Boolean = false,
                                highlighted:Boolean = false,
                                caret:Boolean = false,
                                transition:Boolean = false):void
        {
            super.drawItem(item, false, false, false, transition);  
        }

    }
}

所以这里发生的是我们拦截drawItem方法并调用超类上的方法,欺骗它认为没有选择,突出显示或“关注”。 当您通过键盘更改选择时,插入符号用于表示。 不确定转换参数是什么,如果仍然有一些影响困扰你,你可以像往常一样发送它。

编辑

在看了相关问题之后,我发现问题的根源是使用新的spark架构的项目渲染器,这意味着渲染器负责对特殊状态做出反应(选中,突出显示,显示插入符号)。 因此,在使用spark项呈示器时,还有其他3个函数也需要覆盖:

public class CustomTree extends Tree
{
    public override function isItemShowingCaret(data:Object):Boolean
    {
        return false;
    }

    public override function isItemHighlighted(data:Object):Boolean
    {
        return false;
    }

    public override function isItemSelected(data:Object):Boolean
    {
        return false;
    }

    protected override function drawItem(item:IListItemRenderer,
                                         selected:Boolean = false,
                                         highlighted:Boolean = false,
                                         caret:Boolean = false,
                                         transition:Boolean = false):void
    {
        super.drawItem(item, false, false, false, transition);  
    }
}

奖励 - 覆盖isItemSelectable以防止在单击某个项目时进行选择(您仍然可以通过键盘选择它们,尽管不会有任何视觉暗示):

public override function isItemSelectable(data:Object):Boolean
{
     return false;
}

您可以在树上使用rollOverColorselectionColor样式。 有不同的方式来设置样式,但在这里我将它们设置为白色,将颜色更改为您的背景颜色。

<mx:Tree rollOverColor="#FFFFFF" selectionColor="#FFFFFF"

您可以使用jss方法使用4通道颜色:

<mx:Tree rollOverColor="#00FFFFFF" selectionColor="#00FFFFFF"

...包括颜色选择中的alpha通道(完全透明)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM