2017-10-14 5 views
0

Je travaille sur une application xamarin.forms où j'ai besoin de mesurer la hauteur de la barre de navigation. Comment puis-je le mesurer? J'ai essayé de suivre this mais je ne comprends pas où insérer ce code:Comment mesurer la hauteur de la barre de navigation

Resources resources = context.getResources(); 
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); 
if (resourceId > 0) { 
    return resources.getDimensionPixelSize(resourceId); 
} 
return 0; 

Répondre

4

Vous êtes sur la bonne voie. Le problème est que votre application est multi-plateforme et que la barre de navigation est une fonctionnalité Android uniquement. Étant donné que vous devez probablement accéder à la hauteur de la barre de navigation à partir du code partagé, vous devez utiliser Injection de dépendance. C'est thoroughly described here.

En bref, vous devrez écrire un espace de noms comme ceci:

public interface INavigationBarInfo 
{ 
    int Height { get; }; 
} 

et la mettre en œuvre pour Android dans le projet Android:

public class NavigationBarInfo : INavigationBarInfo 
{ 
    public int Height => RetrieveHeight(); 

    private void RetrieveHeight() 
    { 
     //android specific code to retrieve the navigation bar height 
     //you can use the answer you linked to in your question   
    } 
}