TabLayout:自定义字体大小

TabLayout:自定义字体大小_第1张图片

 

1、主代码 

//方式一:
    private String[] mTabs = new String[]{"案例", "宣传"};
//方式二:动态生成数据
private String[] mTabs = {};
private List firstList = new ArrayList<>();
firstList.add("案例");
firstList.add("宣传");
 mTabs = new String[firstList.size()];
firstList.toArray(mTabs);



private void initTab() {
        addTab(tabLayout, position -> {
           

        });


    }

    private void addTab(TabLayout tabLayout, OnTabChangedListener listener) {
        for (String tab : mTabs) {
            tabLayout.addTab(tabLayout.newTab().setText(tab));
        }
        tabLayout.setScrollableTabRadius(5);
        tabLayout.setSelectedTabIndicatorWidth(70);
        tabLayout.setIndicatorVerticalOffset(0);
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {//改变选中状态下文字大小
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                setCustomTab(tab, true);
                if (listener != null) {
                    listener.onTabChanged(tab.getPosition());
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                setCustomTab(tab, false);
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
        TabLayout.Tab tab = tabLayout.getTabAt(0);
        if (tab != null) {
            setCustomTab(tab, true);
         

        }
    }


    private void setCustomTab(TabLayout.Tab tab, boolean isSelected) {
        tab.setCustomView(null);
        int color = Color.parseColor("#999999");
        int size = 15;
        if (isSelected) {
            color = Color.parseColor("#333333");
            size = 18;
        }
        @SuppressLint("InflateParams") TextView textView = (TextView) LayoutInflater.from(context).inflate(R.layout.item_tab_text, null);
        textView.setTextSize(size);
        textView.setTextColor(color);
        textView.setText(tab.getText());
        tab.setCustomView(textView);
    }

2、自定义接口

public interface OnTabChangedListener {
    void onTabChanged(int position);
}

3、xml



4、MyTextView

@SuppressLint("AppCompatCustomView")
public class MyTextView extends AppCompatTextView {
    private float mLeftWidth;
    private float mLeftHeight;
    private float mTopWidth;
    private float mTopHeight;
    private float mRightWidth;
    private float mRightHeight;
    private float mBottomWidth;
    private float mBottomHeight;

    public MyTextView(Context context) {
        super(context);
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray t = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);
        mLeftWidth = t.getDimension(R.styleable.MyTextView_tv_left_width, dip2px(context, 15));
        mLeftHeight = t.getDimension(R.styleable.MyTextView_tv_left_height, dip2px(context, 15));
        mTopWidth = t.getDimension(R.styleable.MyTextView_tv_top_width, dip2px(context, 15));
        mTopHeight = t.getDimension(R.styleable.MyTextView_tv_top_height, dip2px(context, 15));
        mRightWidth = t.getDimension(R.styleable.MyTextView_tv_right_width, dip2px(context, 15));
        mRightHeight = t.getDimension(R.styleable.MyTextView_tv_right_height, dip2px(context, 15));
        mBottomWidth = t.getDimension(R.styleable.MyTextView_tv_bottom_width, dip2px(context, 15));
        mBottomHeight = t.getDimension(R.styleable.MyTextView_tv_bottom_height, dip2px(context, 15));
        t.recycle();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //让RadioButton的图标可调大小 属性:
        Drawable drawableLeft = this.getCompoundDrawables()[0];//获得文字左侧图片
        Drawable drawableTop = this.getCompoundDrawables()[1];//获得文字顶部图片
        Drawable drawableRight = this.getCompoundDrawables()[2];//获得文字右侧图片
        Drawable drawableBottom = this.getCompoundDrawables()[3];//获得文字底部图片
        if (drawableLeft != null) {
            drawableLeft.setBounds(0, 0, (int) mLeftWidth, (int) mLeftHeight);
        }
        if (drawableTop != null) {
            drawableTop.setBounds(0, 0, (int) mTopWidth, (int) mTopHeight);
        }
        if (drawableRight != null) {
            drawableRight.setBounds(0, 0, (int) mRightWidth, (int) mRightHeight);
        }
        if (drawableBottom != null) {
            drawableBottom.setBounds(0, 0, (int) mBottomWidth, (int) mBottomHeight);
        }
        this.setCompoundDrawables(drawableLeft, drawableTop, drawableRight, drawableBottom);

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    }

    public static int dip2px(Context context, float dpValue) {
        float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);

    }

    public void setDrawableRight(@DrawableRes int drawableRight) {
        Drawable drawableEnd = getResources().getDrawable(drawableRight);
        int size = dip2px(getContext(), 10);
        drawableEnd.setBounds(0, 0, size, size);
        setCompoundDrawables(null, null, drawableEnd, null);
        setCompoundDrawablePadding(size);
    }

    public void setDrawableRight(@DrawableRes int drawableRight, int size, int padding) {
        Drawable drawableEnd = getResources().getDrawable(drawableRight);
        size = dip2px(getContext(), size);
        drawableEnd.setBounds(0, 0, size, size);
        setCompoundDrawables(null, null, drawableEnd, null);
        setCompoundDrawablePadding(dip2px(getContext(), padding));
    }

    public void setDrawableLeft(@DrawableRes int drawableRight, int size, int padding) {
        Drawable drawableStart = getResources().getDrawable(drawableRight);
        size = dip2px(getContext(), size);
        drawableStart.setBounds(0, 0, size, size);
        setCompoundDrawables(drawableStart, null, null, null);
        setCompoundDrawablePadding(dip2px(getContext(), padding));
    }

    public void setDrawableTop(@DrawableRes int top, int size, int padding) {
        Drawable drawableTop = getResources().getDrawable(top);
        size = dip2px(getContext(), size);
        drawableTop.setBounds(0, 0, size, size);
        setCompoundDrawables(null, drawableTop, null, null);
        setCompoundDrawablePadding(dip2px(getContext(), padding));
    }

    public void setDrawableTop(@DrawableRes int drawableTop) {
        Drawable drawabletop = getResources().getDrawable(drawableTop);
        int size = dip2px(getContext(), 10);
        drawabletop.setBounds(0, 0, size, size);
        setCompoundDrawables(null, drawabletop, null, null);
        setCompoundDrawablePadding(size);
    }

    public void setDrawableBottom(@DrawableRes int bottom, int size, int padding) {
        Drawable drawableBottom = getResources().getDrawable(bottom);
        size = dip2px(getContext(), size);
        drawableBottom.setBounds(0, 0, size, size);
        setCompoundDrawables(null, null, null, drawableBottom);
        setCompoundDrawablePadding(dip2px(getContext(), padding));
    }

    public void setDrawableLeft(@DrawableRes int drawableLeft) {
        Drawable drawableStart = getResources().getDrawable(drawableLeft);
        int size = dip2px(getContext(), 15);
        drawableStart.setBounds(0, 0, size, size);
        setCompoundDrawables(drawableStart, null, null, null);
        setCompoundDrawablePadding(dip2px(getContext(), 5));
    }

    public void setDrawableNone() {
        setCompoundDrawables(null, null, null, null);
    }

}

5。自定义属性

 
        
        
        
        
        
        
        
        
    

6、附Tablayout链接

获取Tablayout

你可能感兴趣的:(android)