Отключить цвет переноса для компонентов List или DataGrid
Я хочу избавиться от типичного цвета переворачивания Flex в компонентах на основе списка и отобразить свой собственный стиль откатывания.
Установка useRollOver в "false" не является опцией, поскольку ее отключение также заставит функцию List.isItemHighlighted() всегда возвращать false. Мой пользовательский рендер использует эту функцию.
Это может быть так сложно? Нет ли способа установить этот цвет на прозрачный? Есть ли другой способ для моего рендерера выяснить, выделен ли элемент?
Спасибо!
РЕДАКТИРОВАТЬ: Конечно, я мог бы установить цвет rollOver на "белый" и установить alternatingRowColors что-то похожее на белый. Вид обмана:)
3 ответа
@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 по этому вопросу.
Установив для свойства 'autoDrawBackground' значение 'false' в пользовательском ItemRenderer, вы можете отключить привязанные по умолчанию и выбранные цвета фона, а затем при необходимости установить их в своем средстве визуализации.
Это только опция списка свечей. У элементов управления MX этого нет.
Есть способ сделать это, но это не весело. Вы можете редактировать сам SDK (Yay для открытого исходного кода). Вы можете зайти туда, найти, где он устанавливает цвет подсветки, и начать добавлять код, чтобы создать открытое свойство для альфы подсветки. Я бы сначала заархивировал ваш SDK, так как есть возможность полностью облажаться.
Похоже, что код rollOver находится в классе ListBase, поэтому я бы сделал копию или расширение этого класса и добавил бы к нему код для пролонгации альфы. Затем я бы сделал копию класса List, который наследуется от этой новой ListBase.
Удачи, мой друг, и если ты добьешься успеха, поделись своими новыми уроками со всем миром, так как я уверен, что другие могут захотеть сделать то же самое.