Flex: Prevent barra de rolagem de cobrir conteúdo quando exibido automaticamente

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

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma tela em Flex que será capaz apenas de ser rolada na direção vertical, então eu definir os atributos da tela como se segue:

verticalScrollPolicy="auto" horizontalScrollPolicy="off"

O problema aqui é que a barra de rolagem vertical cobre o conteúdo quando ele aparece - apesar há é suficiente espaço na horizontal para a esquerda. Eu teria esperado que o tamanho do conteúdo teria sido ajustado automaticamente.

Ao definir a política de rolagem vertical para "on", sem conteúdo é coberto também.

No caso de eu definir ambas as políticas de rolagem para 'auto' Eu também obter uma barra de rolagem horizontal apenas para rolagem para a área que é coberta pela barra de rolagem vertical.

Existe uma solução como eu posso novo layout do conteúdo da tela quando a barra de rolagem vertical é mostrada de modo que ele não cobre qualquer conteúdo?

Foi útil?

Solução

É um bug. Veja Flex verticalScrollPolicy bug para uma solução alternativa.

Outras dicas

Apenas uma nota lateral sobre este assunto: é realmente não um bug, mas conhecido comportamento (e destina-se?):

"Flex considera barras de rolagem em seus cálculos de dimensionamento apenas se você definir explicitamente a política de rolagem para ScrollPolicy.ON. Então, se você usar um auto política de rolagem (o padrão), o barra de rolagem sobrepõe os botões. Para evitar esse comportamento, você pode definir o propriedade height para o recipiente HBox ou permitir que o recipiente HBox para redimensionar definindo uma largura à base de percentagem. Lembre-se que a mudança da altura do o recipiente HBox provoca outra componentes em seu aplicativo para movimento e redimensionar de acordo com a sua própria dimensionamento regras. "

- A partir Dimensionamento Componentes na ajuda Flex 3, em "Utilizando barras de rolagem"

Eu tive que encontrar essa solução alternativa Flex ScrollPolicy.AUTO Não boa suficiente que resolveu este problema, porque Flex verticalScrollPolicy bug solução não funcionou para mim.

em vbox ou outro componente baseado em Container, eu resolvido o problema assim.

Errado:

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

não há nenhuma barra de rolagem

versão de trabalho:

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

Eu sou, também. Eu costumo ter alguns problemas com o verticalScrollBar em Flex, então eu prefiro usar a barra de rolagem do navegador para percorrer a aplicação completa. Você pode encontrar um solução alternativa aqui: Como redimensionar o Flex Palco e usar o navegador da barra de rolagem .

O uso de código I:

Em Flex:

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

Na minha HTML (JavaScript):

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

E se você quer adicionar (ou remover) alguma altura:

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';
}

Para remover, você usar "-". Em vez de "+"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top