package com.metis.base.widget; import android.annotation.TargetApi; import android.content.Context; import android.content.res.Resources; import android.os.Build; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.metis.base.R; import com.metis.base.utils.Log; /** * Created by Beak on 2015/10/17. */ public class ViewPagerTabGroup extends LinearLayout implements ViewPager.OnPageChangeListener{ private static final String TAG = ViewPagerTabGroup.class.getSimpleName(); public ViewPagerTabGroup(Context context) { this(context, null); } public ViewPagerTabGroup(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ViewPagerTabGroup(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initThis(context, attrs); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public ViewPagerTabGroup(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initThis(context, attrs); } private void initThis (Context context, AttributeSet attrs) { LayoutInflater.from(context).inflate(R.layout.layout_view_pager_tab_group, this); Resources res = getContext().getResources(); this.setDividerDrawable(res.getDrawable(R.drawable.divider_vertical)); this.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); this.setDividerPadding(res.getDimensionPixelSize(R.dimen.padding_middle)); } public void setViewPager (final ViewPager viewPager) { PagerAdapter adapter = viewPager.getAdapter(); removeAllViews(); for (int i = 0; i < adapter.getCount(); i++) { final int index = i; TextView tv = makeTabView(); tv.setText(adapter.getPageTitle(i)); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams(); if (params == null) { params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); } params.weight = 1; tv.setLayoutParams(params); this.addView(tv); tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { viewPager.setCurrentItem(index, true); } }); } viewPager.addOnPageChangeListener(this); updateSelected(viewPager.getCurrentItem()); } private TextView makeTabView () { TextView tv = (TextView)LayoutInflater.from(getContext()).inflate(R.layout.layout_pager_tab_view, null); /*TextView tv = new TextView(getContext()); tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); tv.setTextColor(getResources().getColorStateList(R.color.video_tab_text_color)); tv.setGravity(Gravity.CENTER); LinearLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); params.weight = 1; tv.setLayoutParams(params);*/ return tv; } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { updateSelected(position); } @Override public void onPageScrollStateChanged(int state) { } private void updateSelected (int position) { for (int i = 0; i < getChildCount(); i++) { this.getChildAt(i).setSelected(i == position); } } }