Flex: Verhindern, dass Scrollbar von Inhalten abdeckt, wenn automatisch angezeigt

StackOverflow https://stackoverflow.com/questions/292826

  •  08-07-2019
  •  | 
  •  

Frage

Ich habe eine Leinwand in Flex in der Lage sein werden, nur in vertikaler Richtung gescrollt werden, so dass ich die Attribute der Leinwand wie folgt:

verticalScrollPolicy="auto" horizontalScrollPolicy="off"

Das Problem hierbei ist, dass die vertikale Bildlaufleiste den Inhalt abdeckt, wenn es erscheint - altough genug horizontalen Raum verlassen ist. Ich hätte erwartet, dass die Inhaltsgröße automatisch eingestellt worden wäre.

Wenn die vertikale Bildlaufrichtlinieneinstellung auf „on“, ist auch kein Gehalt abgedeckt.

Falls ich beiden Scroll-Richtlinien auf ‚auto‘ gesetzt Ich habe auch eine horizontale Bildlaufleiste nur für auf den Bereich scrollen, die durch die vertikale Bildlaufleiste abgedeckt ist.

Gibt es eine Abhilfe, wie ich den Inhalt der Leinwand Neu-Layout kann, wenn die vertikale Bildlaufleiste angezeigt wird, so dass es keinen Inhalt abdecken?

War es hilfreich?

Lösung

Es ist ein Fehler. Siehe Flex vertical Bug für dieses Problem zu umgehen.

Andere Tipps

Nur eine Randnotiz zu diesem Thema: es ist eigentlich kein Bug, aber bekannt ist (und beabsichtigt?) Verhalten:

  

"Flex hält Scrollbalken in seiner Dimensionierung Berechnungen nur, wenn Sie   explizit die Scroll-Politik   ScrollPolicy.ON. Also, wenn Sie verwenden ein   Autoscroll Politik (Standard), die   Bildlaufleiste überlappt die Tasten. Zu   verhindern, dass dieses Verhalten können Sie festlegen, die   height Eigenschaft für die HBox-Container   oder lassen Sie die HBox-Container, um die Größe   durch einen Prozentsatz basierende Breite einstellen.   Denken Sie daran, dass die Höhe der Veränderung   der HBox-Container verursacht andere   Komponenten in der Anwendung zu bewegen   und die Größe nach ihrem eigenen   Dimensionierungsregeln. "

- Von Sizing Komponenten in der Flex 3 Hilfe, unter "Verwenden von Bildlaufleisten"

Ich hatte diese Abhilfe zu finden Flex ScrollPolicy.AUTO Nicht gut genug , die dieses Problem gelöst, weil Flex vertical Bug Abhilfe nicht funktioniert für mich.

auf vbox oder einer anderen Komponente basiert auf Container, löste ich das Problem so.

Falsch:

<mx:VBox width="100%" height="100%"
      verticalScrollPolicy="auto" horizontalScrollPolicy="off">
     <mx:Repeater dataProvider="{hede}">
          <custom:RenderItem ........../>
     </mx:Repeater>
</mx:VBox>

gibt es keine Bildlaufleiste

Arbeitsversion:

<mx:VBox width="100%" height="100%"
    **minHeight="1"** horizontalScrollPolicy="off">
    <mx:Repeater dataProvider="{hede}">
        <custom:RenderItem ........../>
    </mx:Repeater>
</mx:VBox>

Ich bin auch. Ich habe in der Regel einige Probleme mit dem verticalScrollBar in Flex, so dass ich lieber den Browser des Scrollbar zum Scrollen die komplette Anwendung verwenden. Sie können eine Abhilfe Sie hier: Wie die Flex-Bühne um die Größe und den Browser Scrollbar verwenden.

Der Code, den ich verwenden:

In Flex:

ExternalInterface.call("setInitialFlashHeight", this.height);

In meiner HTML (JavaScript):

function setInitialFlashHeight(newHeight) {
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

Und wenn Sie hinzufügen möchten (oder entfernen) eine gewisse Höhe:

function addFlashHeight(height) {
    var divHeight;
    var obj = document.getElementById('my_flash');

    if (obj.offsetHeight) {
        divHeight = obj.offsetHeight;
    } else if (obj.style.pixelHeight){
        divHeight = obj.style.pixelHeight;
    }

    var newHeight = divHeight + height;
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

So entfernen Sie "-". Statt "+"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top