參考開源項目PagerSlidingTabStripjava
作了一些小修改,好比設置Tab頁平均鋪滿效果、字體變色等 微調的代碼請 源碼 下載git
關於我
github
private void addTab(final int position, View tab) { tab.setFocusable(true); tab.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(position); } }); tab.setPadding(tabPadding, 0, tabPadding, 0); setShouldExpand(true);//設置weight=1.0f,實現平鋪的效果,add by lichen if (tab instanceof TextView) { if (position == 0) {//默認首項字體顏色,add by lichen ((TextView) tab).setTextColor(getResources().getColor(R.color.deep_green)); } else {//其餘項字體顏色,add by lichen ((TextView) tab).setTextColor(getResources().getColor(R.color.light_green)); } } tabsContainer.addView(tab, position, shouldExpand ? expandedTabLayoutParams : defaultTabLayoutParams); }
@Override public void onPageSelected(int position) { View view = tabsContainer.getChildAt(position); if (view instanceof ImageButton) {//若是是圖片是Tab頁,add by lichen ((ImageButton) view).setImageResource(R.drawable.ic_input_add); } else if (view instanceof TextView) { setColor(position); } if (delegatePageListener != null) { delegatePageListener.onPageSelected(position); } } /** * 滑動tab修改字體顏色,by lichen * @param position */ private void setColor(int position) { TextView textView0 = (TextView) tabsContainer.getChildAt(0); TextView textView1 = (TextView) tabsContainer.getChildAt(1); TextView textView2 = (TextView) tabsContainer.getChildAt(2); switch (position) { case 0: textView0.setTextColor(getResources().getColor(R.color.deep_green)); textView1.setTextColor(getResources().getColor(R.color.light_green)); textView2.setTextColor(getResources().getColor(R.color.light_green)); break; case 1: textView0.setTextColor(getResources().getColor(R.color.light_green)); textView1.setTextColor(getResources().getColor(R.color.deep_green)); textView2.setTextColor(getResources().getColor(R.color.light_green)); break; case 2: textView0.setTextColor(getResources().getColor(R.color.light_green)); textView1.setTextColor(getResources().getColor(R.color.light_green)); textView2.setTextColor(getResources().getColor(R.color.deep_green)); break; default: break; } }