[英]Disable roll-over color for List or DataGrid components
我想擺脫基於列表的組件中典型的Flex翻轉顏色,並顯示我自己的翻轉渲染風格。
將useRollOver設置為'false' 不是一個選項 ,因為禁用它也會使List.isItemHighlighted()函數始終返回false。 我的自定義渲染器依賴於該功能。
會這么難嗎? 有沒有辦法將翻轉顏色設置為透明? 我的渲染器是否還有其他方法可以確定項目是否突出顯示?
謝謝!
編輯:當然我可以將rollOver顏色設置為'white'並將alternatingRowColors設置為類似於white的顏色。 有點作弊:)
通過在自定義ItemRenderer中將“autoDrawBackground”屬性設置為“false”,您可以禁用默認的懸停和所選背景顏色,然后根據需要在渲染器中設置它們。
這只是spark List選項。 MX控件沒有它。
@invertedSpear,謝謝你的暗示。
它確實有效! 我的意思是,子類化,而不是編輯SDK,沒有嘗試過。 但是你可以做的是為List,DataGrid等(甚至是AdvancedDataGrid)創建一個子類並添加以下函數:
override protected function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number, width:Number,
height:Number, color:uint, itemRenderer:IListItemRenderer):void
{
// get style -- is this the right place?
var alpha:Number = this.getStyle("rollOverAlpha");
if (isNaN(alpha))
alpha = 1.0;
// no need to draw if alpha 0
if (alpha <= 0)
return;
// draw -- this has been copied from superclass, and the alpha parameter added to beginFill()
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginFill(color, alpha);
g.drawRect(0, 0, width, height);
g.endFill();
indicator.x = x;
indicator.y = y;
}
現在,如果您向類添加樣式聲明,則可以滾動:
[Style(name="rollOverAlpha", type="Number", inherit="no")]
public class DataGridExt extends DataGrid
{
...
}
在SDK中更改它當然是一個更好的選擇,因為您只需要觸摸兩個類:ListBase和AdvancedListBase。 我會檢查一下Adobe Jira問題..
有一種方法可以做到這一點,但這並不好玩。 您可以編輯SDK本身(Yay for open source)。 您可以進入,找到設置突出顯示顏色的位置,然后開始添加代碼以生成突出顯示的alpha的公共屬性。 我會首先備份你的SDK,因為有可能完全搞砸了。
看起來rollOver代碼在ListBase類中,所以我會創建該類的副本或擴展,並將roll over alpha的代碼添加到該類。 然后我會創建一個繼承自這個新ListBase的List類的副本。
祝你好運我的朋友,如果你成功了,請與全世界分享你的新課程,因為我相信其他人可能想要做同樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.