Я пытаюсь найти способ масштабировать (либо шрифт, или scaleX & Y) DataGrid (с requiredMinRowCount = requiredMaxRowCount = requiredRowCount = dataProviderLength), чтобы он всегда отображал все строки (так что никаких скроллеров).
Решение, которое я придумал для масштабирования:
protected function thisDatagrid_resizeHandler(event:ResizeEvent):void
{
if (event.oldWidth < this.width) {
this.setStyle('fontSize', this.getStyle('fontSize') + 0.5);
} else if (event.oldWidth > this.width) {
this.setStyle('fontSize', this.getStyle('fontSize') - 0.5);
}
this.minWidth = this.measuredMinWidth;
}
Хотя приведенный выше код действительно изменяет размер текста (отсюда ячейка, столбец и сетка) при изменении размерапроблема, которую я получаю, заключается в том, что масштабирование происходит по вертикали.
Чтобы запрошенный RowCount работал, должно быть , а не - фиксированная высота, установленная на сетке данных.Поэтому мне интересно, каким образом можно заставить сетку постоянно показывать все ее строки и столбцы при ее масштабировании (даже если размер изменен по вертикали)?
Другой вариант - переопределение updateDisplayList, хотя и не так просто для изменения размера.
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
//super.updateDisplayList(unscaledWidth, unscaledHeight);
trace('oldWidth: ' + oldWidth + ' | unscaledWidth: ' + unscaledWidth + ' | parentWidth: ' + this.parent.width);
trace('oldHeight: ' + oldHeight + ' | unscaledHeight: ' + unscaledHeight + ' | parentHeight: ' + this.parent.height);
trace('Potential ScaleX: ' + (unscaledWidth - oldWidth)/unscaledWidth);
trace('Potential ScaleY: ' + (unscaledHeight - oldHeight)/unscaledHeight);
trace('----------------------------------------------------');
/* scaleX = (unscaledWidth - oldWidth)/unscaledWidth;
scaleY = (unscaledHeight - oldHeight)/unscaledHeight; */
//super.updateDisplayList(unscaledWidth, unscaledHeight);
}
Проблема с этим, если я раскомментирую scaleX & scaleY, он будет зацикливаться вечно ...