He integrado el nuevo fragmento api v2 de google maps en un paginador de vistas. Al desplazarse desde el fragmento del mapa, una vista en negro se superpone a los fragmentos adyacentes. ¿Alguien lo ha resuelto?
Editar: captura de pantalla
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
objeto delViewPager
? Atascado en esto durante semanas. Si no entendió bien la pregunta, busque mi pregunta, encontrará mi publicación. Por favor responde.screen record
problema, el problema no parece suceder.Respuestas:
Pude evitar que la superficie negra quedara atrás después de la transición colocando otra vista con un fondo transparente en la parte superior del
ViewPager
interior aFrameLayout
:fuente
Tuve el mismo problema con SlidingMenu y ViewPager. Noté que los botones de control en el fragmento de mapa no son negros en el artefacto dejado atrás. Resolví el problema anulando el
onCreateView()
método deMapFragment (SupportMapFragment)
fuente
Google lanzó una solución para esto, pero solo para 4.1+ (no necesita descargar una nueva versión de PlayServices, usaron una bandera del lado del servidor)
Esto es lo que estoy usando para evitar el problema: garantiza que no desperdicie ningún ciclo de CPU en dispositivos> = 4.1
fuente
FixMapFragment mapFragment = (FixMapFragment) fragmentManager.findFragmentById(R.id.map);
y en el archivo de diseño:<fragment android:id="@+id/map" android:name="com.example.fragments.FixMapFragment" ...
. Sin embargo, el mapa todavía parpadea por lo que puedo decir (Android 4.0.4).Mi solución alternativa: utilice la nueva interfaz de instantáneas de GoogleMap y muestre una instantánea del mapa mientras se desplaza por la página.
Aquí está mi código para configurar la instantánea (está en el mismo fragmento que el mapa, llamado FragmentMap.java):
Donde "mapFragment" es mi SupportedMapFragment y "iv" es un ImageView (hágalo match_parent).
Y aquí estoy controlando el pergamino:
Mi fragmento con mapa (FragmentMap) está en la posición 1, por lo que necesito controlar el desplazamiento desde la posición 0 a 1 y desde la posición 1 a 2 (la primera cláusula if). "getRegisteredFragment ()" es una función en mi FragmentPagerAdapter personalizado, en el que tengo un SparseArray (Fragmento) llamado "isteredFragments ".
Por lo tanto, cada vez que se desplaza hacia o desde su mapa, siempre ve una instantánea del mismo. Este trabajo es muy bueno para mi.
fuente
Tuve el mismo problema de pantalla negra en el desplazamiento de la vista de lista, estaba usando un fragmento de mapa con la vista de lista en la misma pantalla, resolví este problema con el uso de la propiedad mágica en xml donde estoy hablando de la vista de lista, solo tenemos que poner Android: scrollingCache = "false" .mi problema está solucionado, pruebe esta propiedad para detener el retraso y el parpadeo en sus mapas.
fuente
No ha dado muchos detalles, así que solo puedo sugerir algo. Tuve un problema similar en el que la pantalla parpadeaba entre las vistas del buscapersonas. Resultó que mapView se inflaba al cambiar de página por primera vez.
Para ser claros, tenía 3 páginas en mi localizador y mi mapa era la última página.
Para resolver esto, encontré que estableciendo el número de páginas fuera de la pantalla en 2 (esto funcionó en el caso anterior), cuando mi fragmento comenzó, cargó todas las vistas a la vez.
Ver http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit (int)
fuente
Hay una solución más a este problema. Estoy mostrando MapFragment dentro de otro fragmento. MapFragment se agrega dinámicamente en un FrameLayout.
La solución es utilizar frameLayout.setVisibility (View.Visible) y frameLayout.setVisibility (View.Gone) en los eventos de apertura y cierre del menú deslizante. No requiere agregar una vista adicional. Y el área negra desapareció por completo.
fuente
Ninguno de los métodos anteriores funcionó para mí, ni siquiera otros que he encontrado en otros lugares. Finalmente, elegí una solución parcial. Escucho los cambios de página a través del onPageChangeListener de ViewPager, y oculto el mapa cuando su página comienza a desplazarse, y también lo muestro de nuevo cuando deja de desplazarse. También agregué una Vista en blanco para que se muestre al desplazarse.
fuente
Simplemente copie mi fragmento de mapa personalizado a su proyecto. Y si tiene líneas negras con ScrollView en la parte superior e inferior configurada para su ScrollView android: fadingEdge = "none"
}
fuente