Zintegrowałem nowy fragment google maps api v2 w pager widoku. Podczas przewijania z fragmentu mapy czarny widok zachodzi na sąsiednie fragmenty. Ktoś rozwiązał?
Edycja: zrzut ekranu
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
przedmiot zViewPager
? Utknąłem w tym od tygodni. Jeśli nie zrozumiałeś dobrze pytania, spójrz na moje pytanie, znajdziesz mój post. Proszę odpowiedz.screen record
problemu wydaje się nie mieć miejsca.Odpowiedzi:
Udało mi się zatrzymać pozostawienie czarnej powierzchni po przejściu, umieszczając inny widok z przezroczystym tłem na górze
ViewPager
wewnątrz aFrameLayout
:źródło
Miałem ten sam problem z SlidingMenu i ViewPager. Zauważyłem, że przyciski sterujące we fragmencie mapy nie są czarne w lewym artefakcie. Rozwiązałem problem, zastępując
onCreateView()
metodęMapFragment (SupportMapFragment)
źródło
Google wydało poprawkę, ale tylko dla 4.1+ (nie musisz pobierać nowej wersji PlayServices, użyli flagi po stronie serwera)
Oto, czego używam, aby ominąć ten problem - zapewnia, że nie marnujesz żadnych cykli procesora na urządzeniach> = 4.1
źródło
FixMapFragment mapFragment = (FixMapFragment) fragmentManager.findFragmentById(R.id.map);
w pliku layoutu:<fragment android:id="@+id/map" android:name="com.example.fragments.FixMapFragment" ...
. Chociaż mapa nadal migocze, o ile wiem (Android 4.0.4).Moje obejście: skorzystaj z nowego interfejsu migawki z GoogleMap i wyświetl migawkę mapy podczas przewijania strony.
Oto mój kod do ustawiania migawki (znajduje się w tym samym fragmencie co mapa, o nazwie FragmentMap.java):
Gdzie „mapFragment” to mój SupportedMapFragment, a „iv” to ImageView (ustaw go jako match_parent).
I tutaj kontroluję zwoje:
Mój fragment z mapą (FragmentMap) znajduje się na pozycji 1, więc muszę kontrolować przewijanie od pozycji 0 do 1 i od pozycji 1 do 2 (pierwsza klauzula if). „getRegisteredFragment ()” to funkcja w moim niestandardowym FragmentPagerAdapter, w której mam SparseArray (Fragment) o nazwie „registeredFragments”.
Tak więc za każdym razem, gdy przewijasz do lub z mapy, zawsze widzisz jej migawkę. U mnie to działa bardzo dobrze.
źródło
Miałem ten sam problem z czarnym ekranem przy przewijaniu widoku listy, użyłem fragmentu mapy z widokiem listy na tym samym ekranie, rozwiązałem ten problem z użyciem magicznej właściwości w xml, gdzie mówię o widoku listy, tylko musimy umieścić androida: scrollingCache = "false". mój problem został rozwiązany. Wypróbuj tę właściwość, aby zatrzymać opóźnienia i migotanie na mapach.
źródło
Nie podałeś zbyt wielu szczegółów, więc mogę tylko zasugerować. Miałem podobny problem, że ekran migotał między widokami na pagerze. Okazało się, że mapView napompował się podczas pierwszej zamiany stron.
Dla jasności miałem 3 strony na moim pagerze, a moja mapa była ostatnią stroną.
Aby rozwiązać ten problem, stwierdziłem, że ustawiając liczbę stron poza ekranem na 2 (zadziałało to w powyższym przypadku), że kiedy mój fragment zaczął się, ładował wszystkie widoki naraz.
Zobacz http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit (int)
źródło
Jest jeszcze jedno rozwiązanie tego problemu. Pokazuję MapFragment w innym fragmencie. MapFragment jest dynamicznie dodawany do FrameLayout.
Rozwiązaniem jest użycie frameLayout.setVisibility (View.Visible) i frameLayout.setVisibility (View.Gone) do otwierania i zamykania zdarzeń menu przesuwanego. Nie wymaga to dodatkowego widoku. A czarny obszar całkowicie zniknął.
źródło
Żadna z powyższych metod nie działała dla mnie, nawet inne, które znalazłem gdzie indziej. Wreszcie wybrałem częściowe rozwiązanie. Nasłuchuję zmian na stronie za pośrednictwem narzędzia onPageChangeListener ViewPagera i ukrywam mapę, gdy jej strona zaczyna się przewijać, i podobnie pokazuję ją ponownie, gdy przestaje się przewijać. Dodałem również biały widok, który ma być wyświetlany podczas przewijania.
źródło
Po prostu skopiuj mój niestandardowy fragment mapy do swojego projektu. A jeśli masz czarne linie z ScrollView na górze i na dole ustawionym na ScrollView android: fadingEdge = "none"
}
źródło