Android TabLayoutのいくつかの小さな問題

3416 ワード

プロジェクトをする時、1つの問題に出会って、時にはtabLayout.setupWithViewPager(viewPager)前にタイトルを設置して後で空白になるかもしれなくて、Tabのtitleを表示しないで、長い間解決してもだめでした.
結果研究では、2つの方法で問題を解決しました.
  • は、tabLayout.setupWithViewPager(viewPager)に手動でタイトルを追加し直し、ここでは後述しない.
  • adapterのgetPageTitle
  • を書き換える.
    adapter
    public class TabAdapter extends FragmentPagerAdapter {
        private ArrayList fragments;
        //  titleList      
        private ArrayList mTitles;
    
        public TabAdapter(FragmentManager fm, ArrayList fragments, ArrayList titles) {
            super(fm);
            this.fragments = fragments;
            mTitles = titles;
        }
    
        //  :    
        @Override
        public CharSequence getPageTitle(int position) {
            return mTitles.get(position);
        }
    
        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }
    
        @Override
        public int getCount() {
            return fragments.size();
        }
    }

    ページ内の主な方法の実装
    private void initTabView() {
            viewPager = view.findViewById(R.id.data_count_viewpager);
            tabLayout = view.findViewById(R.id.tab_layout);
    
            tabAdapter = new TabAdapter(getActivity().getSupportFragmentManager(), mFragments, mTitles);
    
            //  Tab
            for (int i = 0; i < mTitles.size(); i++) {
                tabLayout.addTab(tabLayout.newTab().setText(mTitles.get(i)));
            }
    
            //  tabAdapter ViewPager
            viewPager.setAdapter(tabAdapter);
            //  ViewPager TabLayout
            tabLayout.setupWithViewPager(viewPager);
        }