TabLayout tab selection

前端 未结 25 1459
情深已故
情深已故 2020-11-29 17:15

How should I select a tab in TabLayout programmatically?

 TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
 tabLayout.setupWithViewPager(viewPager         


        
相关标签:
25条回答
  • A combined solution from different answers is:

    new Handler().postDelayed(() -> {
    
      myViewPager.setCurrentItem(position, true);
    
      myTabLayout.setScrollPosition(position, 0f, true);
    },
    100);
    
    0 讨论(0)
  • 2020-11-29 17:22

    if u are using TabLayout without viewPager this helps

     mTitles = getResources().getStringArray(R.array.tabItems);
        mIcons = getResources().obtainTypedArray(R.array.tabIcons);
        for (int i = 0; i < mTitles.length; i++) {
    
            tabs.addTab(tabs.newTab().setText(mTitles[i]).setIcon(mIcons.getDrawable(i)));
            if (i == 0) {
                /*For setting selected position 0 at start*/
                Objects.requireNonNull(Objects.requireNonNull(tabs.getTabAt(i)).getIcon()).setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary), PorterDuff.Mode.SRC_IN);
            }
        }
    
        tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                Objects.requireNonNull(tab.getIcon()).setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary), PorterDuff.Mode.SRC_IN);
            }
    
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                Objects.requireNonNull(tab.getIcon()).setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.white), PorterDuff.Mode.SRC_IN);
            }
    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
    
            }
        });
    
    0 讨论(0)
  • 2020-11-29 17:24

    Try this way.

    tabLayout.setTabTextColors(getResources().getColor(R.color.colorHintTextLight),
                               getResources().getColor(R.color.colorPrimaryTextLight));
    
    0 讨论(0)
  • 2020-11-29 17:26

    Use this:

    tabs.getTabAt(index).select();
    
    0 讨论(0)
  • 2020-11-29 17:26

    This can help too

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {
        }
    
        @Override
        public void onPageSelected(int i) {
            tablayout.getTabAt(i).select();
        }
    
        @Override
        public void onPageScrollStateChanged(int i) {
        }
    });
    
    0 讨论(0)
  • 2020-11-29 17:27

    This is how I solved it:

    void selectPage(int pageIndex){
        tabLayout.setScrollPosition(pageIndex,0f,true);
        viewPager.setCurrentItem(pageIndex);
    }
    
    0 讨论(0)
提交回复
热议问题