PagerSlidingTabStrip使用 和扩展4个属性



PagerSlidingTabStrip 默认 选中后的字体不变色

所以我加了4个属性:

默认的字体大小, 默认的字体颜色

选中后的字体大小,选中后的字体颜色


使用 PagerSlidingTabStrip很简单, 直接复制 PagerSlidingTabStrip类 和 它的attr.xml里的属于他的字段即可 ,然后在自己的LAYOUT里引用即可

不需要作为库引入!


修改后的 PagerSlidingTabStrip类


package com.zms.diyview;

import java.util.Locale;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.HorizontalScrollView;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.zms.tab.R;

/**
 * 滑动指示器pstsindicatorcolor颜色
 * 在视图的底部的全宽度的线pstsunderlinecolor颜色
 * 选项卡之间的分隔pstsdividercolor颜色
 * 滑动指示器pstsindicatorheightheight
 * 在视图的底部的全宽度的线pstsunderlineheight高度
 * pstsdividerpadding顶部和底部填充的分频器
 * pststabpaddingleftright左、右填充每个选项卡
 * pstsscrolloffset卷轴被选择的标签的偏移
 * pststabbackground背景绘制的每个标签,应该是一个statelistdrawable
 * pstsshouldexpand如果设置为TRUE,每个标签都给予同样的重量,默认为false
 * pststextallcaps如果为真,所有选项卡标题都是大写,默认为true
 * 扩展4个属性 , 分别是 默认的字体大小 和颜色 ,和选中后的 字体大小和颜色
 */

public class PagerSlidingTabStrip extends HorizontalScrollView {

 public interface IconTabProvider {
  public int getPageIconResId(int position);
 }

 // @formatter:off
 private static final int[] ATTRS = new int[] {
  android.R.attr.textSize,
  android.R.attr.textColor
    };
 // @formatter:on

 private LinearLayout.LayoutParams defaultTabLayoutParams;
 private LinearLayout.LayoutParams expandedTabLayoutParams;

 private final PageListener pageListener = new PageListener();
 public OnPageChangeListener delegatePageListener;

 private LinearLayout tabsContainer;
 private ViewPager pager;

 private int tabCount;

 private int currentPosition = 0;
 private int selectedPosition = 0;
 private float currentPositionOffset = 0f;

 private Paint rectPaint;
 private Paint dividerPaint;

 private int indicatorColor = 0xFF666666;
 private int underlineColor = 0x1A000000;
 private int dividerColor = 0x1A000000;

 private boolean shouldExpand = false;
 private boolean textAllCaps = true;

 private int scrollOffset = 52;
 private int indicatorHeight = 8;
 private int underlineHeight = 2;
 private int dividerPadding = 12;
 private int tabPadding = 24;
 private int dividerWidth = 1;

 private int tabTextSize = 12;
 private int tabTextColor = 0xFF666666;
 
 private int selectedTabTextSize=12;
 private int selectedTabTextColor = 0xFF666666;
 private Typeface tabTypeface = null;
 private int tabTypefaceStyle = Typeface.NORMAL;

 private int lastScrollX = 0;

 private int tabBackgroundResId = R.drawable.background_tab;

 private Locale locale;

 public PagerSlidingTabStrip(Context context) {
  this(context, null);
 }

 public PagerSlidingTabStrip(Context context, AttributeSet attrs) {
  this(context, attrs, 0);
 }

 public PagerSlidingTabStrip(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);

  setFillViewport(true);
  setWillNotDraw(false);

  tabsContainer = new LinearLayout(context);
  tabsContainer.setOrientation(LinearLayout.HORIZONTAL);
  tabsContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
  addView(tabsContainer);

  DisplayMetrics dm = getResources().getDisplayMetrics();

  scrollOffset = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, scrollOffset, dm);
  indicatorHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, indicatorHeight, dm);
  underlineHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, underlineHeight, dm);
  dividerPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerPadding, dm);
  tabPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, tabPadding, dm);
  dividerWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerWidth, dm);
  tabTextSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, tabTextSize, dm);

  // get system attrs (android:textSize and android:textColor)

  TypedArray a = context.obtainStyledAttributes(attrs, ATTRS);

 // tabTextSize = a.getDimensionPixelSize(0,

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值