Comment obtenir la taille visible sur une Activité?
Comment puis-je savoir la taille visible de mon activité?
Je vais essayer d'obtenir l'Activité réelle de la taille,
non, la hauteur et la largeur de getHeight()
et getWidth()
,
ce qui me donne de l'écran en taille réelle.
- Pourquoi voulez-vous faire? Dans la plupart des cas, ce n'est pas nécessaire et que la plupart des choses que vous pourriez avoir besoin pour peut être fait avec de meilleures techniques qui viennent avec android pour gérer les différentes tailles d'écran.
- J'ai vraiment besoin de savoir de combien de pixels de l'activité dans sa largeur et sa hauteur. Il a à voir avec la précision cartographique.
- Êtes-vous à l'aide d'une mapview ou d'un affichage personnalisé pour l'affichage de la carte?
- Oui, je suis entrain de créer une carte à partir de zéro pour les propriétaires cartographique info. J'ai trouvé que c'est plus facile à mettre en œuvre moi-même, plutôt que d'utiliser le code d'autres personnes (au moins pour moi :-)).
Vous devez vous connecter pour publier un commentaire.
Je pense vous aurez envie de chercher à
Activity.getWindow()
etWindow.getDecorView()
, et obtenir la largeur/hauteur de.onResume()
, soit...J'ai trouvé un moyen de connaître la hauteur exacte de mon activité: si vous avez une vue sur le remplissage de l'ensemble de l'écran, derrière la barre de titre et la barre des tâches, il suffit d'utiliser
getBottom()
pour obtenir la vraie hauteur de cette activité.Je l'ai fait à l'aide de ma racine mise en page, le problème est que vous ne pouvez pas obtenir cette info (largeur et hauteur) dans votre onCreate/démarrage/onResume méthodes lorsqu'ils sont exécutés par la première fois.
Tout moment après, la taille peut être récupéré à partir de la racine de votre mise en page (LinearLayout/FrameLayout/TableLayout/etc), dans mon cas, j'ai été en utilisant FrameLayout:
ou:
Édité à partir d'ici --------------------------------------------------------
J'ai trouvé un moyen d'obtenir cette info sur le onCreted méthode, mais seulement si vous avez plus d'une activité. Sur mon cas, j'ai une activité principale qui appelle la deuxième activité.
Sur main_activity avant que j'appelle la second_activity, par une nouvelle Itent, je peux ajouter des infos supplémentaires pour le second_activity. Voici le code dont vous avez besoin sur la première activité:
Après que sur votre deuxième activité que vous pouvez récupérer cette info sur la méthode onCreate de votre deuxième activité de le faire:
Il y a moyen simple d'obtenir la Vue de droite taille à l'aide de
getDefaultSize
fonction. En cas de Vue s'étendant sur toute l'activité, vous pouvez utiliser l'approche suivante pour obtenir l'activité du client de la région de dimensions:Pour rendre la Vue s'étendant sur l'ensemble de l'activité:
Si vous utilisez la liaison de données (ce qui devrait être), vous pouvez appeler
binding.getRoot().getHeight()
oùbinding
est votreViewDataBinding
créé avecDataBindingUtil.setContentView()
ou d'autresDataBindingUtil
méthode. Vous aurez besoin d'attendre jusqu'à ce que la mise a taille, vous pouvez le faire comme ceci:Noter que vous devez supprimer le OnGlobalLayoutListener sinon ça va être l'exécution de cette tout le temps de tout changement dans votre mise en page.
J'aime gain de temps de réponses plus:
Vous obtiendrez une hauteur et une largeur de 0 à onCreate()/onStart()/onResume() méthodes. La raison est la taille n'est pas encore fixé.
Si vous voulez connaître taille actuelle vous feriez mieux d'utiliser de l'observateur dans l'une de ces méthodes et de faire ce que vous voulez, quand vous arrivez taille actuelle.
constraint_layout est la mise en page de l'élément racine dans le code ci-dessous: