2 votes

Ajoutez du padding à FrameLayout de manière programmatique sans déplacer le contenu interne du Fragment avec le contenu de ScrollView

Je dois ajouter un padding ou une marge en bas du FrameLayout dans une Activity de manière programmée après un certain délai. Le problème est que c'est un conteneur pour des Fragments avec un ScrollView. Lorsque je définis un padding/margin en bas, le contenu interne est déplacé vers le haut. La partie supérieure du contenu du Fragment n'est plus visible.

Cela fonctionne bien lorsque je définis un padding en bas du contenu du ScrollView, mais je veux éviter cela et gérer cela dans une Activity sans avoir besoin de modifier chaque Fragment individuellement.

J'ai essayé :

  • définir une marge/padding en bas du FrameLayout
  • placer un View en bas du FrameLayout dans un LinearLayout,
  • définir android:clipToPadding="false" sur le ScrollView.

Le même comportement à chaque fois. Des idées ?

2voto

sswierczek Points 755

Je l'ai compris par moi-même. Il semble que ce problème survient lorsquesetVerticalFadingEdgeEnabled(true)est utilisé avecsetFadingEdgeLength()surScrollView.

Cette astuce a résolu le problème :

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    setVerticalFadingEdgeEnabled(false);
    super.onSizeChanged(w, h, oldw, oldh);
    setVerticalFadingEdgeEnabled(true);
}

1voto

Skalaw Points 41

Si vous avez encore un problème, vous pouvez utiliser :

android:descendantFocusability="blocksDescendants"

Dans votre ScrollView enfant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X