Android - afficher/masquer le fragment laisse une zone vide
Donné:
- Deux placés à la verticale des éléments sur l'écran (ViewPager et Fragment)
- 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:
- 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:
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
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
Vous devez vous connecter pour publier un commentaire.
Un mois plus tard, j'ai compris comment le faire. S'avère que de simplement masquer le fragment n'est pas assez, essentiellement, j'ai besoin de masquer/afficher la coquille contenant le fragment. C'est toujours le LinearLayout qui a été initialement définie en XML. En fait, il suffit de définir la visibilité sur la mise en page originale pour afficher/masquer le fragment. Ainsi, le code de la question ressemble maintenant à ceci:
Note que vous souhaitez afficher/masquer le fragment pour que cela fonctionne
OriginalL'auteur Bostone