6
votes

Disposition de Redraw Android Programmatiquement

Ma mise en page ne positionne parfois pas les éléments correctement. J'ai essayé beaucoup de solutions, mais un travail unique est pivoté de portrait au paysage, puis de retour du paysage au portrait. Ensuite, la mise en page est redressée automatiquement et convient parfaitement. Je définit l'orientation | clavier afin que le contenu n'est pas rechargé, seulement redessiné. Comment redessiner la programmation de contenu comme paysage-portrait? Merci.

Edit: J'ai essayé de suivre et n'a aucun effet p>

getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
getWindow().getDecorView().findViewById(android.R.id.content).requestLayout();


2 commentaires

Qu'est-ce que "parfois" signifie? Y a-t-il un moyen reproductible pour obtenir l'erreur? Avez-vous essayé demandeLayout de forcer à redessiner la mise en page? Pouvez-vous mettre un exemple de code pour montrer quel genre de vues utilisez-vous?


Vous pouvez essayer d'appeler invalidate () pour forcer une vue à redessiner.


4 Réponses :


7
votes

Avez-vous essayé de Invalidate ( ) code> the Vue root ?

findViewById(android.R.id.content).invalidate();


2 commentaires

Cela causerait-il setContentView () à appeler?


Dans Kotlin, j'ai appelé la mise en page directement par ID I.E. llhint.invalidate () mais ça ne fonctionne pas Je veux dire pas de mise en page entièrement complète qui contient textview, editext etc.



2
votes

Lorsque l'orientation de l'écran change, Android recrée l'activité actuelle.

essayer appelant Mesure (int, int ) ou demandeLAYOUT () . Sinon, il n'y a aucune chance de relancer par programmation des vues.


0 commentaires

1
votes

Call DemandeLayout () uniquement et Lire Voir Description de la classe pour plus d'informations.


0 commentaires

-1
votes

Si cela est dangereux ou mauvais pratique, veuillez me corriger. J'ai essayé toutes ces méthodes aussi et hors du désespoir a décidé d'essayer d'appeler mon oncreate à nouveau et cela a fonctionné. Donc, pour l'instant, j'utiliserai oncreate (null) pour actualiser ma vue lorsque je mettez à jour les données. Encore une fois, s'il vous plaît laissez-moi savoir si cela est dangereux ou une mauvaise pratique et si possible une alternative de travail.


0 commentaires