Add Icons to SlidingTabLayout instead of Text

后端 未结 11 2013
执笔经年
执笔经年 2020-12-02 23:57

I\'m implementing a SlidingTabLayout in my android application. What my query is that I\'d like to implement icons in my Sliding Tabs instead of texts for navigation. I sear

11条回答
  •  情歌与酒
    2020-12-03 00:33

    To customize SlidingTabLayout the way you want, you only need to modify the method populateTabStrip():

    public void populateTabStrip() {
            final PagerAdapter adapter = mViewPager.getAdapter();
            final View.OnClickListener tabClickListener = new TabClickListener();
    
            for (int i = 0; i < adapter.getCount(); i++) {
                View tabView = null;
    
                tabView = LayoutInflater.from(getContext()).inflate(R.layout.tab_layout, mTabStrip,
                        false);
    
                ImageView iconImageView = (ImageView) tabView.findViewById(R.id.tab_layout_icon);
                iconImageView.setImageDrawable(getContext().getResources().getDrawable(getIconResourceArray()[i]));
    
                tabView.setOnClickListener(tabClickListener);
    
                mTabStrip.addView(tabView);
            }
        }
    

    Your layout could be something like that:

    
    
    
        
    
    

    The way you implement the getResourceArray() method is up to you. Here is how I did:

    public class IconSlidingTabLayout extends HorizontalScrollView {
        private Integer[] mIconResourceArray;
    
        ...
    
        public Integer[] getIconResourceArray() {
            return mIconResourceArray;
        }
    
        public void setIconResourceArray(Integer[] mIconResourceArray) {
            this.mIconResourceArray = mIconResourceArray;
        }
    }
    

    In the activity:

    mSlidingTabLayout = (IconSlidingTabLayout) findViewById(R.id.icon_sliding_tab_layout);
    Integer[] iconResourceArray = { R.drawable.news_tab_icon,
            R.drawable.challenges_tab_icon, R.drawable.trophies_tab_icon,
            R.drawable.leaderboard_tab_icon };
    mSlidingTabLayout.setIconResourceArray(iconResourceArray);
    

    Be aware that in order to have access to R.layout.tab_layout*, you have to import yourpackage.R instead of android.R as it is by default in SlidingTabStrip.

提交回复
热议问题