TabLayout tab selection

前端 未结 25 1507
情深已故
情深已故 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条回答
  •  旧时难觅i
    2020-11-29 17:48

    If you can't use tab.select() and you don't want to use a ViewPager, you can still programmatically select a tab. If you're using a custom view through TabLayout.Tab setCustomView(android.view.View view) it is simpler. Here's how to do it both ways.

    // if you've set a custom view
    void updateTabSelection(int position) {
        // get the position of the currently selected tab and set selected to false
        mTabLayout.getTabAt(mTabLayout.getSelectedTabPosition()).getCustomView().setSelected(false);
        // set selected to true on the desired tab
        mTabLayout.getTabAt(position).getCustomView().setSelected(true);
        // move the selection indicator
        mTabLayout.setScrollPosition(position, 0, true);
    
        // ... your logic to swap out your fragments
    }
    

    If you aren't using a custom view then you can do it like this

    // if you are not using a custom view
    void updateTabSelection(int position) {
        // get a reference to the tabs container view
        LinearLayout ll = (LinearLayout) mTabLayout.getChildAt(0);
        // get the child view at the position of the currently selected tab and set selected to false
        ll.getChildAt(mTabLayout.getSelectedTabPosition()).setSelected(false);
        // get the child view at the new selected position and set selected to true
        ll.getChildAt(position).setSelected(true);
        // move the selection indicator
        mTabLayout.setScrollPosition(position, 0, true);
    
        // ... your logic to swap out your fragments
    }
    

    Use a StateListDrawable to toggle between selected and unselected drawables or something similar to do what you want with colors and/or drawables.

提交回复
热议问题