Я пытаюсь найти способ масштабирования (шрифтом или масштабом X и Y) DataGrid (с requestMinRowCount = requestMaxRowCount = requestRowCount = 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;
}
Хотя приведенный выше код действительно изменяет размер текста (следовательно, ячейки, столбца и сетки) при изменении размера, проблема, с которой я сталкиваюсь, заключается в том, что масштабирование происходит по вертикали.
Для работы requiredRowCount не должно быть фиксированной высоты, установленной для Datagrid. Поэтому мне интересно, как заставить сетку постоянно отображать все строки и столбцы при масштабировании (даже при изменении размера по вертикали)?
Другой вариант - переопределить 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, он будет зацикливаться навсегда ...