Forums Développement Multimédia

Aller au contenu

Hauteur disonible dans un TabbedViewNavigator

CODE

4 réponses à ce sujet

#1 loicremy

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 169 messages

Posté 23 September 2014 - 18:04 PM

Bonjour à tous,

Tout est dans le titre. Je dois afficher un StageWebView dans une View et j'ai donc besoin de le dimmensionner et positionner précisément.

Cela à fait pas mal de temps que je cherche la solution mais là, il y a urgence car je doit boucler l'appli...

Mon problème est que je ne parvient à trouver le moyen pas a obtenir la hauteur des barres en haut et en bas de la vue (Tabbar et Actionbar) pour les soustraire ensuite de la hauteur totale. C'est peut-être d'ailleurs une mauvaise méthode ?

Quelqu'un a-t-il une idée, voir un exemple?

Merci d'avance

Loïc

#2 Tonic

    Plop

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5712 messages

Posté 01 October 2014 - 15:01 PM

Salut,

tu peux accéder à la taille de "tabBar" par le biais du TabbedViewNavigator, et ton "actionBar" est disponible par le biais de ton application surement de type ViewNavigatorApplication.

Il te suffit ensuite de calculer la taille restante avec soustraction de la tabBar + actionBar. Tu peux également écouter le resize globale de ton application, dispactché lors du resize ou du changement d'orientation, afin de mettre à jour la taille restante.

++ ^^

#3 loicremy

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 169 messages

Posté 02 October 2014 - 18:08 PM

Merci pour ces infos,

En fait, j'avais déjà pas mal cherché par là. Le problème que je rencontre, c'est que les valeurs retournées pour les hauteurs de "actionbar" et "tabbar" semblent bien loin de ce qui serait nécessaire.

Sur mon Nexus 5, j'ai 1776 de hauteur globale disponible, mais pour "actionbar" : 45 et "tabbar" : 51, ce qui est loin de représenter la hauteur réelle de ces 2 éléments...

Je doit certainement omettre un coefficient ou quelque chose du genre ???


Merci d'avance ;-)

Loïc

A tout hasard, voici le source de la vue en question.

MXML

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="HTML"
addedToStage="init()"
viewDeactivate="SWV_close();"
>

<fx:Declarations>
<!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). -->
</fx:Declarations>

<fx:Script>
<![CDATA[
import mx.core.FlexGlobals;

private var webView:StageWebView;

protected function init():void {

trace("Init StageWebView");

trace("Hauteur actionbar : "+ navigator.actionBar.height)
trace("Hauteur tabbar : " + FlexGlobals.topLevelApplication.tabbedNavigator.tabBar.height);

trace("Hauteur dispo : "+ stage.stageHeight);

webView = new StageWebView();
//webView.stage = FlexGlobals.topLevelApplication.stage;
webView.stage = this.stage;
//webView.viewPort = new Rectangle( 0, 50, 800, 300);
webView.viewPort = new Rectangle( 0, navigator.actionBar.height, stage.stageWidth, stage.stageHeight - FlexGlobals.topLevelApplication.tabbedNavigator.tabBar.height );
webView.addEventListener(Event.COMPLETE, onURLLoadComplete);
webView.addEventListener(LocationChangeEvent.LOCATION_CHANGE, onLocationChange);
webView.loadURL("http://www.google.fr");
}



protected function SWV_close():void
{
webView.dispose();
}


protected function onURLLoadComplete(event:Event):void
{
trace("Chargement terminé ");
}

protected function onLocationChange(event:LocationChangeEvent):void
{
trace("Changement d'adresse internet : " + event.location);
}

]]>
</fx:Script>

</s:View>


#4 Tonic

    Plop

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5712 messages

Posté 03 October 2014 - 08:28 AM

Salut,

met un setInterval toute les 2 secondes par exemple, qui trace la taille de tes barres, tu verras si celle-ci évolue.
L'idée c'est devoir si la taille évolue, un peu plus tard qu'au addedToStage.
Sinon comme je te le disais, fait le teste en écoutant le resize.

++ ^^

#5 loicremy

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 169 messages

Posté 10 October 2014 - 08:29 AM

Finelement, j'ai 'résolu' le problème en utilisant une bibliothèque (Flexcapacitor - webview.as) qui permet d'utiliser le Stagewebview comme un objet graphique ordinaire. Je lui indique 100% en hauteur et largeur et tout marche.

Merci encore des conseils

Loïc



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP