0 votos

Hola buenos dias, 
Tengo ViewPager2 con TabLayout, para crear un menú con un total de 12 pestañas, si deslizo el dedo por la pantalla para ir mostrando pestaña por pestaña, la vista de los fragment se muestra en un tiempo razonable, pero si en lugar de ir deslizando el dedo, selecciono por ejemplo la pestaña 10, pasan 8 segundos interminables hasta que se muestra.
 
En el Logcat, he visto este tipo de mensaje:
WARNING: tile memory limits exceeded, some content may not draw
 
MainActivity.java

     mAdapter = new ViewPagerAdapter(getSupportFragmentManager(), getLifecycle());
      
     mAdapter.addFragment(new menu1());
     mAdapter.addFragment(new menu2());
     mAdapter.addFragment(new menu3());
     mAdapter.addFragment(new menu4());
     mAdapter.addFragment(new menu5());
     mAdapter.addFragment(new menu6());
     mAdapter.addFragment(new menu7());
     mAdapter.addFragment(new menu8());
     mAdapter.addFragment(new menu9());
     mAdapter.addFragment(new menu10());
     mAdapter.addFragment(new menu11());
     mAdapter.addFragment(new menu12());
      
     binding.viewPager2.setAdapter(mAdapter);
      
     binding.viewPager2.setOffscreenPageLimit(12-1); 
     
     binding.viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback(){
         @Override
         public void onPageSelected(int position) {
             binding.tabs.selectTab(binding.tabs.getTabAt(position));
         }
     });
     
     binding.tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
         @Override
         public void onTabSelected(TabLayout.Tab tab) {
             binding.viewPager2.setCurrentItem(tab.getPosition());
         }
         @Override
         public void onTabUnselected(TabLayout.Tab tab) {
         }
         @Override
         public void onTabReselected(TabLayout.Tab tab) {
     
         }
     });

activity_main.xml

     <RelativeLayout
         ....
         .... >
     
         <com.google.android.material.appbar.AppBarLayout
             android:id="@+id/appBar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
     
             <com.google.android.material.appbar.MaterialToolbar
                 android:id="@+id/myToolbar"
                 android:layout_width="match_parent"
                 android:layout_height="?attr/actionBarSize"
                 app:layout_scrollFlags="scroll|enterAlways" />
     
             <com.google.android.material.tabs.TabLayout
                 android:id="@+id/tabs"
                 android:layout_width="match_parent"
                 android:layout_height="90dp"
                 android:background="@color/colorPrimary"
                 app:tabGravity="fill"
                 app:tabIconTint="@drawable/color_icono_selector"
                 app:tabIndicatorColor="#FA0707"
                 app:tabIndicatorFullWidth="false"
                 app:tabIndicatorHeight="6dp"
                 app:tabMode="scrollable"
                 app:tabSelectedTextColor="#FA0707"
                 app:tabTextAppearance="@style/CustomTextAppearanceTab"
                 app:tabTextColor="#FFFFFF"
                 app:titleTextColor="#FFFFFF">
     
                 <com.google.android.material.tabs.TabItem
                     .....
                     ..... />
     
                 <com.google.android.material.tabs.TabItem
                     .....
                     ..... />
     
                 <com.google.android.material.tabs.TabItem
                     .....
                     ..... />
     
                     .....
                     .....
                     .....
     
             </com.google.android.material.tabs.TabLayout>
     
             <androidx.viewpager2.widget.ViewPager2
                 android:id="@+id/viewPager2"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 app:layout_behavior="@string/appbar_scrolling_view_behavior" />
     
         </com.google.android.material.appbar.AppBarLayout>
     
     </RelativeLayout>

He cambiado el valor de binding.viewPager2.setOffscreenPageLimit(5) con diferente valores, pero sigue igual de lento al mostrar los diferentes menús

 

por en Android

1 Respuesta

0 votos

Puede que sean muchas pestañas para la memoria.

Android tiene RecyclerView para lidiar con estos problemas, puedes ver más información en: https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=es-419

 

por