2010-10-11 57 views
1

我有一個包含圖標,標籤和工具提示的對象列表。我只想顯示圖標和標籤。工具提示應該在鼠標上可見的項目上。在flex中顯示列表項工具提示

有沒有一種方法可以實現這一點,而無需編寫我自己的鼠標懸停/懸空功能?

(請注意,數據提示當標籤被切斷,他們只能顯示一個不同的東西)

回答

1

顯示在List項提示的最簡單的方法是提供dataTipFielddataTipFunction財產,但你似乎想要保持默認的'切標籤'行爲,那麼你可能不會逃避編寫自己的解決方案。

UPDATE: OK。在玩了一段時間的代碼後,我必須承認,讓這些提示顯示可能有點棘手,但一旦你知道該怎麼做,這實際上是微不足道的。你需要做的是設置showDataTips財產truedataTipFunction某些函數產生你的提示前例。

function(item:Object):String{ 
    return item.tipField; 
} 

奇怪的事情在這裏的事實是,dataTipField屬性設置爲「tipField」將無法正常工作方式相同上面的函數和我想知道爲什麼一樣多,但它仍然祕密給我。

更新2:其實這種行爲是不奇怪的,因爲它是在showDataTips文件明確提到,在所有但我老了,不能看到爲我所用,你一定要原諒我我以前的聲明一樣好:)

+0

感謝您嘗試,但數據提示顯示只有當我想始終顯示工具提示(我的標籤不截斷)標籤被截斷。 – Ofir 2010-10-12 15:43:34

+0

但是,爲什麼它不能像DataGrid一樣執行,它默認情況下只在文本被截斷時顯示提示,這纔是真正的祕密。 – Opux 2015-09-02 20:08:39

0

我遇到了基本相同的情況......好,但有一些細微的區別,我使用了一個Flex mx.controls.List,並且在其上設置了一個渲染器,渲染器是複選框的擴展,I希望對工具提示進行更嚴格的控制,以便我可以選擇顯示輔助信息而不是全文(並且僅在截斷時)。我試着基於查看ToolTipManager源代碼探討了一些東西,但是使用內部註冊方法並沒有發揮作用,最終我基本上做了你所說的並且似乎沒有問題的工作。所以想知道使用自己的事件處理程序時會出現什麼問題,您仍然可以使用內置的ToolTipManager方法來顯示/隱藏,以便看起來相對乾淨。下面的代碼是從演示本身:

private var myToolTip:IToolTip; 

public function FilterItemRenderer() { 
    addEventListener(MouseEvent.MOUSE_OVER, mouseOver_handler); 
    addEventListener(MouseEvent.MOUSE_OUT, mouseOut_handler); 
} 
private function mouseOver_handler(event:MouseEvent):void 
{ 
    //In my case using the data elements of the DP to carry the info for tooltips 
    if(data.hasOwnProperty("toolTip") && data.toolTip) 
     myToolTip = ToolTipManager.createToolTip(data.toolTip, event.stageX+5, event.stageY-5) 
} 
private function mouseOut_handler(event:MouseEvent):void 
{ 
    if(myToolTip) 
     ToolTipManager.destroyToolTip(myToolTip); 
    myToolTip=null; 
} 
override public function get toolTip():String 
{ 
    return null; 
} 

所以我想我的答案是不,我看不出有什麼辦法做到這一點的你的建議之外,但再一次,你可以澄清一下這個問題是?

感謝和好運, 肖恩

+0

謝謝Shaun,我希望有一個內置的解決方案,而不是僅僅爲此寫一個自己的itemRenderer,因爲它看起來這麼簡單。 目前,我正在擴展ListItemRenderer以獲得此功能,但我希望會有東西出現... – Ofir 2010-10-14 12:00:33