J'utilise une activité avec le thème du dialogue, et je veux qu'elle soit en plein écran. J'ai essayé toutes sortes de choses, même de passer par le WindowManager pour étendre la fenêtre en largeur et en hauteur manuellement, mais rien ne fonctionne.
Apparemment, une fenêtre de dialogue (ou une activité ayant pour thème le dialogue) ne se développe qu'en fonction de son contenu, mais même cela ne fonctionne pas toujours. Par exemple, j'affiche une barre de progression circulaire dont la largeur et la hauteur sont définies sur FILL_PARENT (tout comme son conteneur de mise en page), mais la boîte de dialogue s'enroule autour de la barre de progression beaucoup plus petite au lieu de remplir l'écran.
Il doit y avoir un moyen d'afficher quelque chose de petit à l'intérieur d'une fenêtre de dialogue et de l'étendre en plein écran sans que son contenu soit également redimensionné ?
2 votes
Remarque intéressante : lorsque vous définissez la largeur et la hauteur du conteneur de mise en page sur une valeur réelle en pixels, la boîte de dialogue est redimensionnée en conséquence. Mais lorsqu'on lui attribue la valeur FILL_PARENT, elle ne le fait pas...
0 votes
Vraiment ? La disposition que l'activité instancie, a-t-elle une balise parent Relative ou LinearLayout qui est définie sur la hauteur et la largeur de fill_parent ? J'ai implémenté quelques activités avec un thème de dialogue et je n'ai jamais eu de problème avec l'occupation de tout l'écran.
0 votes
Oui, l'activité a un LinearLayout réglé sur FILL_PARENT pour la largeur et la hauteur.
0 votes
J'ai en quelque sorte résolu le problème en utilisant une solution de contournement, mais comme ce n'est pas une bonne solution, je laisse la question ouverte. Ce que j'ai fait, c'est de sous-classer LinearLayout et de surcharger sa méthode onMeasure(), qui est responsable de la détermination de la taille de la vue pendant un cycle de mise en page, et de la fixer à la largeur et à la hauteur de l'écran. Ce n'est cependant pas correct, car cela ne prend pas en compte l'espace occupé par les barres de menu, de sorte que le conteneur sera en fait plus grand qu'il n'y paraît à l'écran (avec tous les effets secondaires bizarres comme la disparition des enfants dans les zones non visibles de l'écran).
0 votes
J'ai trouvé la bonne solution, voir ma réponse ci-dessous.
0 votes
Voir cette réponse dans un autre fil de discussion, peut-être que cela pourrait aider stackoverflow.com/a/7655350/3214497