Android - afficher/masquer le fragment laisse une zone vide

Donné:

  1. Deux placés à la verticale des éléments sur l'écran (ViewPager et Fragment)
  2. D'Action dans le premier fragment sélectionné (ViewFlipper) permet de basculer entre le mode texte et WebView vue dans le fragment du haut et masque/affiche fragment de fond.

Observée:

  1. Cacher le fragment de fond laisse un espace vide, où le fragment de fond est situé.

J'ai essayé à la fois Relative et LinearLayout (avec le haut fragment défini à weight=1) mais les deux n'ont aucun effet après fragment de fond est retiré, j'ai encore de l'espace vide sur le fond

Ici de haut niveau, du fichier de mise en page:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="0dip" android:layout_weight="1"/>

<!-- This gets replaced with appropriate fragment at run time -->
<LinearLayout
    android:id="@+id/scrollFragmentPlaceholder"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minHeight="110dip" />
</LinearLayout>

Voici le code qui permet d'activer le fragment

    Fragment scroll = getSupportFragmentManager().findFragmentById(R.id.scrollFragment);
    if (scroll.isHidden() == isWebView)
        return; //already handled, do nothing
    FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
    if (scroll != null && scroll.isAdded()) {
        if (isWebView) {
            tr.hide(scroll);
        } else
            tr.show(scroll);
    }
    tr.commit();

Et voici à quoi il ressemble:
Android - afficher/masquer le fragment laisse une zone vide

Avez-vous essayé de faire un *.measure() sur l'affichage qui reste?
Pas vraiment, mais si j'inverse l'ordre et afficher le texte de la version/masquer le fond, il affiche correctement
WebView pour android sanglante est bizarre. Pourriez-vous inclure quelques captures d'écran pour que je puisse voir de quoi vous parlez plus précisément? Aussi, vous devez avoir layoutWeight = 1 sur les deux points de Vue si vous voulez qu'ils prennent la moitié de l'espace disponible. Vous devez assurez-vous de spécifier l'orientation="vertical" dans la vue parent.
Non, il n'est pas WebView, désolé. Textuelle va laisser un espace vide. Je vais mettre un peu de code pour la question
Vous vous cachez avec View.GONE ou View.INVISIBLE?

OriginalL'auteur Bostone | 2012-05-21