Tablayout with icons only

后端 未结 12 1407
暗喜
暗喜 2020-12-04 11:32

I am using design support to create tabs. I am also using ViewPager for swipable tabs.

Now, I don\'t know how to use only icons instead of texts in tabs

12条回答
  •  心在旅途
    2020-12-04 11:40

    This may not be the best answer for all cases, but what I found did not solve my problem yet.

    After having a look at Androids implementation of tabLayout.setupWithViewPager(ViewPager pager) I came up with a solution using just listeners.

    The layout structure:

    | LinearLayout (vertical)
    |-- TabLayout (width: match_parent)
    |---- TabItem (without text, just icons)
    |---- TabItem
    |---- ...
    |-- ViewPager
    

    Code for the both listeners:

    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            pager.setCurrentItem(tab.getPosition());
        }
    
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
        }
    
        @Override
        public void onTabReselected(TabLayout.Tab tab) {
        }
    });
    pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            tabLayout.setScrollPosition(position, positionOffset, false);
        }
    
        @Override
        public void onPageSelected(int position) {
            TabLayout.Tab tab = tabLayout.getTabAt(position);
            if (tab != null) {
                tab.select();
            }
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    

    Have a look at the tabLayout.setScrollPosition call inside OnPageChangeListener.onPageScrolled for the more or less good moving of the indicator while scrolling.

    This may not work if the TabLayout's width is not set to match_parent (or must be scrollable).

提交回复
热议问题