Je développe une application sur Android avec ce formulaire:GridLayout est chevauchée, lorsque le VISIBILITÉ de certains de ses éléments est réglé sur GONE
<ScrollView>
<RelativeLayout>
<TextView/>
<RelativeLayout>
....
</RelativeLayout>
<gridLayout>
7 CheckBoxes
1 ImageButton
</gridLayout>
<LinearLayout>
many TextViews
</LinearLayout>
</RelativeLayout>
</ScrollView>
Le ImageButton
à l'intérieur des lorsque certains des cases à cocher disparaissent gridLayout
contrôles (VISIBILITY->GONE
) et quand il est pressé (le ImageButton) le LinearLayout
, qui est juste en dessous (le gridLayout), chevauche le gridLayout
avant qu'il ne prenne sa forme finale. Voir les images ci-dessous:
[1]: https://i.stack.imgur.com/K6aSc.png C'est avant la disparition.
[2]: https://i.stack.imgur.com/nHqpj.png Cela se produit pendant la disparition.
EDIT: Le problème se produit parce que le View.GONE
prend un certain temps à réaliser visuellement, mais le gridLayout
comprend que cela arrive immédiatement, il se réserve l'espace « vide » tout de suite. Je pense seulement que je peux comprendre, est de définir le View.INVISIBLE
à la place et de redimensionner le gridLayout
manuellement. Y a-t-il un meilleur moyen?
EDIT2 Le problème est dû à animateLayoutChanges="true"
. En raison des animations, il faut du temps pour que les checkBox disparaissent. Existe-t-il un moyen de forcer le linearLayout à "attendre" que l'effet de l'animation se termine?
Des idées?