Saya telah mengintegrasikan fragmen api v2 google maps baru dalam tampilan pager. Saat menggulir dari fragmen peta, tampilan hitam tumpang tindih dengan fragmen yang berdekatan. Seseorang telah memecahkannya?
Edit: tangkapan layar
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
objek dariViewPager
? Terjebak ini selama berminggu-minggu. Jika Anda tidak mengerti pertanyaan dengan baik, maka cari pertanyaan saya, Anda akan menemukan posting saya. Tolong balas.screen record
masalah tampaknya tidak terjadi.Jawaban:
Saya dapat menghentikan permukaan hitam yang tertinggal setelah transisi dengan menempatkan tampilan lain dengan latar belakang transparan di atas bagian
ViewPager
dalam aFrameLayout
:sumber
Memiliki masalah yang sama dengan SlidingMenu dan ViewPager. Saya perhatikan bahwa tombol kontrol di fragmen peta tidak berwarna hitam di artefak yang tertinggal. Saya memecahkan masalah dengan mengganti
onCreateView()
metodeMapFragment (SupportMapFragment)
sumber
Google merilis perbaikan untuk ini, tetapi hanya untuk 4.1+ (Anda tidak perlu mengunduh versi baru PlayServices, mereka menggunakan bendera sisi server)
Inilah yang saya gunakan untuk melewati masalah - Pastikan Anda tidak menyia-nyiakan siklus CPU apa pun pada perangkat> = 4.1
sumber
FixMapFragment mapFragment = (FixMapFragment) fragmentManager.findFragmentById(R.id.map);
dan di tata letak file:<fragment android:id="@+id/map" android:name="com.example.fragments.FixMapFragment" ...
. Padahal, peta masih berkedip sejauh yang saya tahu (Android 4.0.4).Solusi saya: manfaatkan antarmuka snapshot baru dari GoogleMap dan tampilkan snapshot peta sambil menggulir halaman.
Berikut adalah kode saya untuk menyetel snapshot (ada di fragmen yang sama dengan peta, disebut FragmentMap.java):
Di mana "mapFragment" adalah SupportedMapFragment saya dan "iv" adalah ImageView (buat sesuai dengan match_parent).
Dan di sini saya mengontrol gulungan:
Fragmen saya dengan peta (FragmentMap) ada di posisi 1, jadi saya perlu mengontrol scroll dari posisi 0 ke 1 dan dari posisi 1 ke 2 (klausa if pertama). "getRegisteredFragment ()" adalah fungsi dalam FragmentPagerAdapter khusus saya, di mana saya memiliki SparseArray (Fragment) yang disebut "terdaftarFragments".
Jadi, setiap kali Anda menggulir ke atau dari peta Anda, Anda selalu melihat snapshotnya. Ini bekerja dengan sangat baik untuk saya.
sumber
Saya memiliki masalah layar hitam yang sama saat menggulir tampilan daftar, saya menggunakan fragmen peta dengan tampilan daftar di layar yang sama.Saya telah menyelesaikan masalah ini dengan menggunakan properti magis di xml di mana saya berbicara tampilan daftar hanya kita harus meletakkan android: scrollingCache = "false" . Masalah saya telah diperbaiki coba properti ini untuk menghentikan kelambatan dan kedipan di peta Anda.
sumber
Anda belum memberikan banyak detail jadi hanya begitu banyak yang bisa saya sarankan. Saya memiliki masalah serupa yaitu layar berkedip-kedip di antara tampilan di pager. Ternyata mapView membengkak saat menukar halaman untuk pertama kalinya.
Untuk memperjelas, saya memiliki 3 halaman di pager saya dan peta saya adalah halaman terakhir.
Untuk mengatasi ini, saya menemukan bahwa mengatur jumlah halaman layar mati menjadi 2 (ini berfungsi dalam kasus di atas) sehingga ketika fragmen saya mulai memuat semua tampilan sekaligus.
Lihat http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit (int)
sumber
Ada satu solusi lagi untuk masalah ini. Saya menampilkan MapFragment dalam fragmen lain. MapFragment secara dinamis ditambahkan ke dalam FrameLayout.
Solusinya adalah dengan menggunakan frameLayout.setVisibility (View.Visible) dan frameLayout.setVisibility (View.Gone) pada acara buka dan tutup menu geser. Ini membutuhkan pandangan ekstra untuk ditambahkan. Dan area hitam itu benar-benar hilang.
sumber
Tidak ada metode di atas yang berhasil untuk saya, bahkan metode lain yang saya temukan di tempat lain. Akhirnya, saya memilih solusi parsial. Saya mendengarkan perubahan halaman melalui onPageChangeListener ViewPager, dan menyembunyikan peta saat halamannya mulai bergulir, dan juga menampilkannya lagi saat berhenti bergulir. Saya juga telah menambahkan Tampilan putih untuk ditampilkan saat menggulir.
sumber
Cukup salin fragmen peta khusus saya ke proyek Anda. Dan jika Anda memiliki garis hitam dengan ScrollView di bagian atas dan bawah disetel ke ScrollView Anda android: fadingEdge = "none"
}
sumber