J'ai intégré le nouveau fragment api v2 de google maps dans un pager de vue. Lors du défilement à partir du fragment de carte, une vue noire chevauche les fragments adjacents. Quelqu'un a résolu?
Edit: capture d'écran
public static class PagerAdapter extends FragmentPagerAdapter{
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
Fragment pageFragment;
switch (position) {
case 0:
pageFragment = new TabAFragment();
break;
case 1:
pageFragment = new TabBFragment();
break;
case 2:
pageFragment = SupportMapFragment.newInstance();
break;
default:
pageFragment = null;
break;
}
return pageFragment;
}
}
GoogleMap
objet duViewPager
? Collé dessus pendant des semaines. Si vous n'avez pas bien compris la question, recherchez ma question, vous trouverez mon message. Répondez, s'il vous plaît.screen record
le problème ne semble pas se produire.Réponses:
J'ai pu empêcher la surface noire d'être laissée après la transition en plaçant une autre vue avec un fond transparent au-dessus de l'
ViewPager
intérieurFrameLayout
:la source
Eu le même problème avec SlidingMenu et ViewPager. J'ai remarqué que les boutons de contrôle dans le fragment de carte ne sont pas noirs dans l'artefact laissé derrière. J'ai résolu le problème en remplaçant la
onCreateView()
méthode deMapFragment (SupportMapFragment)
la source
Google a publié un correctif pour cela, mais seulement pour 4.1+ (vous n'avez pas besoin de télécharger une nouvelle version de PlayServices, ils ont utilisé un indicateur côté serveur)
Voici ce que j'utilise pour contourner le problème - S'assure que vous ne perdez aucun cycle de processeur sur les appareils> = 4.1
la source
FixMapFragment mapFragment = (FixMapFragment) fragmentManager.findFragmentById(R.id.map);
et dans le fichier de mise en page:<fragment android:id="@+id/map" android:name="com.example.fragments.FixMapFragment" ...
. Cependant, la carte scintille toujours pour autant que je sache (Android 4.0.4).Ma solution de contournement: utilisez la nouvelle interface d'instantané de GoogleMap et affichez un instantané de la carte tout en faisant défiler la page.
Voici mon code pour définir l'instantané (il est dans le même fragment que la carte, appelé FragmentMap.java):
Où "mapFragment" est mon SupportedMapFragment et "iv" est un ImageView (faites-le match_parent).
Et ici je contrôle le parchemin:
Mon fragment avec map (FragmentMap) est en position 1, donc je dois contrôler le défilement de la position 0 à 1 et de la position 1 à 2 (la première clause if). "getRegisteredFragment ()" est une fonction de mon FragmentPagerAdapter personnalisé, dans lequel j'ai un SparseArray (Fragment) appelé "registeredFragments".
Ainsi, chaque fois que vous faites défiler vers ou depuis votre carte, vous en voyez toujours un instantané. Cela fonctionne très bien pour moi.
la source
J'ai eu le même problème d'écran noir lors du défilement de la vue de liste, j'utilisais un fragment de carte avec une vue de liste dans le même écran.J'ai résolu ce problème avec l'utilisation de la propriété magique en xml où je parle de la vue de la liste, nous devons simplement mettre Android: scrollingCache = "false". Mon problème est résolu. Essayez cette propriété pour arrêter le décalage et le scintillement dans vos cartes.
la source
Vous n'avez pas donné beaucoup de détails, donc je ne peux que suggérer beaucoup de choses. J'ai eu un problème similaire: l'écran scintillait entre les vues du téléavertisseur. Il s'est avéré que la mapView se gonflait lors du premier échange entre les pages.
Pour être clair, j'avais 3 pages dans mon pager et ma carte était la dernière page.
Pour résoudre ce problème, j'ai trouvé que définir le nombre de pages hors écran sur 2 (cela a fonctionné dans le cas ci-dessus) que lorsque mon fragment a commencé, il a chargé toutes les vues à la fois.
Voir http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit (int)
la source
Il existe une autre solution à ce problème. Je montre MapFragment dans un autre fragment. Le MapFragment est ajouté dynamiquement dans un FrameLayout.
La solution consiste à utiliser frameLayout.setVisibility (View.Visible) et frameLayout.setVisibility (View.Gone) sur les événements d'ouverture et de fermeture du menu glissant. Il nécessite l'ajout d'une vue supplémentaire. Et la zone noire a complètement disparu.
la source
Aucune des méthodes ci-dessus n'a fonctionné pour moi, pas même d'autres que j'ai trouvées ailleurs. Enfin, j'ai choisi une solution partielle. J'écoute les changements de page via le onPageChangeListener du ViewPager, et je cache la carte lorsque sa page commence à défiler, et je la montre également à nouveau lorsqu'elle cesse de défiler. J'ai également ajouté une vue blanche à afficher lors du défilement.
la source
Copiez simplement mon fragment de carte personnalisé dans votre projet. Et si vous avez des lignes noires avec ScrollView en haut et en bas sur votre Android ScrollView: fadingEdge = "none"
}
la source