簡體   English   中英

TabLayout:切換片段時滯后

[英]TabLayout: Lag when switching fragments

我有50個片段,每個片段至少包含20個組件。 即使我使用了以下語句,在切換選項卡時也遇到了延遲(延遲):

viewpager.setOfscreenPageLimit(2)

但這沒用。 我試圖用另一個線程(UI線程除外)中的片段初始化Tablayout,如下所示:

new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {

                        PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());

                        // Add Fragments  
                        // Here there are 50 fragments, but I added just 2 
                        //fragments for simplicity

                        //region Phase Five
                        adapter.addFragment(new PhaseFiveTestTwoFragment(), "");

                        adapter.addFragment(new LessonOneFragment(), "");
                        //endregion

                        viewPager.setOffscreenPageLimit(2);

                        viewPager.setAdapter(adapter);

                        tabLayout.setupWithViewPager(viewPager);

                    }
                }, 100);

但是,切換標簽時我仍然滯后。

這是我有多少個組件的示例:

在此處輸入圖片說明

任何幫助將不勝感激。

不要為此使用Handler。 您真的不需要為此設置延遲

將此用作您的ViewPagerAdapter(這只是標准的ViewPager適配器結構):

 private class ViewPagerAdapter extends FragmentPagerAdapter { private final List < Fragment > mFragList = new ArrayList < > (); public ViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mFragList.get(position); } @Override public int getCount() { return mFragList.size(); } public void addFragmentI(Fragment fragment) { mFragList.add(fragment); } private void removeFragmentI(Collection < Fragment > fragment) { mFragList.removeAll(fragment); } } 

對於設置適配器,請使用以下命令:

 Fragment[] frags = { new Fragment1(), new Fragment2(), new Fragment3(), new Fragment4(), new Fragment5() }; for (int i = 0; i < tabCount; i++) { pagerAdapter.addFragmentI(frags[i]); } mViewPager.setAdapter(pagerAdapter); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabGravity(TabLayout.GRAVITY_CENTER); mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); 

這必須毫無故障地工作。 保持碎片輕巧

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM