12
votes

ViewPager ne supporte pas layout_height = enveloppant_content

Je construis une application Android avec la mise en page suivante. mise en page d'application

C'est déjà connu que Layout_height = "wrap_content" code> ne fonctionne pas pour le visualpager. P>

Ma question est de savoir comment le changer de manière dynamique. Le contenu de l'espace de vue est gonflé à partir de deux dispositions XML, vp_statistics.xml et vp_campaigns.xml. Code> p>

voici le XML pour le point de vue de l'espace de vue p> xxx Pré>

Voici le code de mon PageauDapter P>

MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);


3 commentaires

Avez-vous corrigé le problème? J'ai un similaire.


avez-vous trouvé la solution pour cela


Veuillez vedette code.google.com/p/andrroid/issues/deetail ? id = 54604


5 Réponses :


0
votes

Utiliser 0dp au lieu de wrap_content et pour changer de manière dynamique que xxx


1 commentaires

Votre code ne fonctionne pas, cela bloque la demande. Le bon code serait pager.setlayoutparams (nouveau linearlayout.layoutparams (layoutparams.ill_parent, layoutparams.wrap_content)); mais même avec le code modifié, il ne change pas la hauteur du visionneur.



-1
votes

Afin d'assigner différents immobiliers d'écran à chaque mise en page linéaire, essayez d'utiliser le paramètre layout_weight . Vous pouvez réaffecter ce cadre en code pour atteindre ce changement de pondération «dynamique». Vue d'ensemble ici avec de nombreux exemples de Google-capables de la façon dont Pour atteindre les mises en page de poids dans le code ...


2 commentaires

Ce que j'essaie de faire dans mon application, c'est de ne pas affecter la mise en page supérieure et le point de vue inférieur un poids afin de leur donner la moitié de l'écran pour chacun, j'essaie d'attribuer différentes valeurs à la hauteur de l'espace de visionneur chacun TEMPS La page ViewPager change, car les présentations qui représentent les pages de visualisation sont différentes en hauteur. Et, par exemple, si la première page a la hauteur de 200 dP et que j'attribuais le mode de vue mode_height = "200dP", lors de la modification de la deuxième page (qui correspond à 400 dP), le bas 200DP est caché!


Hey Andrei, il semble que vous ayez besoin de mesurer la vue après avoir été dessinés et mettez à jour votre affichage de la largeur et de la hauteur de votre pager après la fin du tirage au sort. Je me suis engagé dans une tâche similaire récemment tout en intégrant les cartes Google dans Webviews. Découvrez cette réponse sur le sujet. Cela vous aidera.



6
votes
  1. Ajouter un poids = 2 attribut au parent linearlayout et définir orientation = vertical . .
  2. Définissez le top Enfant linearlayout's Layoutout_weight = 1 . En outre, définissez layout_height = 0DIP
  3. enveloppez l'affichage dans un autre linearlayout avec layout_weight = 1 et layout_height = 0DIP

1 commentaires

@bagusflyer Si vous partagez votre code, nous pourrons peut-être voir ce qui ne va pas avec ça.



-2
votes

Utilisez RelativelAnout B>:

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

    <LinearLayout 
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/layout" >

    </android.support.v4.view.ViewPager>

</RelativeLayout>


0 commentaires

2
votes

J'ai répondu à une question similaire ici .

La solution étend ViewPager pour remplacer OnMeasure () pour faire wrap_content Travaillez simplement pour la hauteur.


0 commentaires