Apache flex flex 4:mx |树如何禁用悬停和选择颜色?
这是与我的第一个问题相关的第二个问题: 我想禁用悬停和选择颜色,这样当用户选择一个项目时,它的背景不会改变颜色。这怎么可能 更新 我不想选择选择和悬停颜色。背景包含一个图像,因此它不会有用。我需要完全禁用颜色 另一个更新 我试图重写树类,但没有成功 这是覆盖树类的类:Apache flex flex 4:mx |树如何禁用悬停和选择颜色?,apache-flex,flex4,tree,Apache Flex,Flex4,Tree,这是与我的第一个问题相关的第二个问题: 我想禁用悬停和选择颜色,这样当用户选择一个项目时,它的背景不会改变颜色。这怎么可能 更新 我不想选择选择和悬停颜色。背景包含一个图像,因此它不会有用。我需要完全禁用颜色 另一个更新 我试图重写树类,但没有成功 这是覆盖树类的类: package components.popups.WelcomeBack { import mx.controls.listClasses.IListItemRenderer; import mx.controls.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>
谢谢您可以在树上使用滚动颜色和selectionColor样式。有不同的方式来设置样式,但这里我将它们设置为白色,将颜色更改为任何背景颜色
<mx:Tree rollOverColor="#FFFFFF" selectionColor="#FFFFFF"
我有好消息和坏消息。好消息是这真的很容易。坏消息是您需要对树进行子类化
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方法并调用超类上的方法,愚弄它,使其认为没有选择、突出显示或“插入”的内容。插入符号用于通过键盘更改选择。不确定转换参数的作用是什么,如果仍然有一些影响困扰您,您可以将其作为始终为false发送
编辑
在查看相关问题后,我发现问题的根源是使用新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);
}
}
奖金-覆盖IsItemSelective,以防止在单击项目时进行选择(您仍然可以通过键盘选择项目,尽管没有视觉提示):
在jss的方法中,您可能可以使用4通道颜色:
<mx:Tree rollOverColor="#00FFFFFF" selectionColor="#00FFFFFF"
谢谢,很遗憾,这并不能解决我的问题。我需要的颜色是透明的,因为背景包含一个图像。我无法选择特定的颜色,不幸的是,它没有解决问题。我可能做错了什么。我将代码粘贴到我的主要帖子上。请告诉我最新情况。谢谢,请编辑它,这样我们就可以看到你使用的是什么树组件了?基本上,重要的是使用新的tree类,而不是旧的tree类。另外,请确保您已清除浏览器缓存,或者至少它已加载您的新版本。我更新了我的答案以应对您的情况。在相关问题上使用您的代码进行了测试。谢谢。这种方法也很有效,但我更喜欢知道如何覆盖,这样就不会从一开始就绘制选择和滚动颜色。
<mx:Tree rollOverColor="#00FFFFFF" selectionColor="#00FFFFFF"