直播系统app源码,TabLayout:自定义字体大小

直播系统app源码,TabLayout:自定义字体大小实现的相关代码

1、主代码 

 

1
<br>//方式一:<br>    private String[] mTabs = new String[]{"案例", "宣传"};<br>//方式二:动态生成数据<br>private String[] mTabs = {};<br>private List<String> firstList = new ArrayList<>();<br>firstList.add("案例");<br>firstList.add("宣传");<br> mTabs = new String[firstList.size()];<br>firstList.toArray(mTabs);<br> <br> <br> <br>private void initTab() {<br>        addTab(tabLayout, position -> {<br>           <br> <br>        });<br> <br> <br>    }<br> <br>    private void addTab(TabLayout tabLayout, OnTabChangedListener listener) {<br>        for (String tab : mTabs) {<br>            tabLayout.addTab(tabLayout.newTab().setText(tab));<br>        }<br>        tabLayout.setScrollableTabRadius(5);<br>        tabLayout.setSelectedTabIndicatorWidth(70);<br>        tabLayout.setIndicatorVerticalOffset(0);<br>        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {//改变选中状态下文字大小<br>            @Override<br>            public void onTabSelected(TabLayout.Tab tab) {<br>                setCustomTab(tab, true);<br>                if (listener != null) {<br>                    listener.onTabChanged(tab.getPosition());<br>                }<br>            }<br> <br>            @Override<br>            public void onTabUnselected(TabLayout.Tab tab) {<br>                setCustomTab(tab, false);<br>            }<br> <br>            @Override<br>            public void onTabReselected(TabLayout.Tab tab) {<br> <br>            }<br>        });<br>        TabLayout.Tab tab = tabLayout.getTabAt(0);<br>        if (tab != null) {<br>            setCustomTab(tab, true);<br>         <br> <br>        }<br>    }<br> <br> <br>    private void setCustomTab(TabLayout.Tab tab, boolean isSelected) {<br>        tab.setCustomView(null);<br>        int color = Color.parseColor("#999999");<br>        int size = 15;<br>        if (isSelected) {<br>            color = Color.parseColor("#333333");<br>            size = 18;<br>        }<br>        @SuppressLint("InflateParams") TextView textView = (TextView) LayoutInflater.from(context).inflate(R.layout.item_tab_text, null);<br>        textView.setTextSize(size);<br>        textView.setTextColor(color);<br>        textView.setText(tab.getText());<br>        tab.setCustomView(textView);<br>    }

2、自定义接口

 

1
<br>public interface OnTabChangedListener {<br>    void onTabChanged(int position);<br>}

3、xml

 

1
<br><com.x.common.widget.tablayout.TabLayout<br>        android:id="@+id/tl_title"<br>        android:layout_width="match_parent"<br>        android:layout_height="50dp"<br>        android:background="#ffffff"<br>        android:paddingTop="10dp"<br>        android:paddingBottom="6dp"<br>        app:tabGravity="center"<br>        app:tabIndicatorColor="@color/colorPrimary"<br>        app:tabIndicatorHeight="4dp"<br>        app:tabPaddingBottom="4dp"<br>        app:tabSelectedTextColor="@color/colorPrimary" /><br><com.x.common.widget.MyTextView xmlns:android="http://schemas.android.com/apk/res/android"<br>    xmlns:app="http://schemas.android.com/apk/res-auto"<br>    android:textSize="16sp"<br>    android:layout_gravity="center"<br>    android:gravity="center"<br>    android:textColor="@color/color_333"<br>    android:layout_width="wrap_content"<br>    app:tv_bottom_height="15dp"<br>    app:tv_bottom_width="20dp"<br>    android:layout_height="wrap_content"><br> <br></com.zswl.common.widget.MyTextView>

4、MyTextView

 

1
<br>@SuppressLint("AppCompatCustomView")<br>public class MyTextView extends AppCompatTextView {<br>    private float mLeftWidth;<br>    private float mLeftHeight;<br>    private float mTopWidth;<br>    private float mTopHeight;<br>    private float mRightWidth;<br>    private float mRightHeight;<br>    private float mBottomWidth;<br>    private float mBottomHeight;<br> <br>    public MyTextView(Context context) {<br>        super(context);<br>    }<br> <br>    public MyTextView(Context context, AttributeSet attrs) {<br>        super(context, attrs);<br>        TypedArray t = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);<br>        mLeftWidth = t.getDimension(R.styleable.MyTextView_tv_left_width, dip2px(context, 15));<br>        mLeftHeight = t.getDimension(R.styleable.MyTextView_tv_left_height, dip2px(context, 15));<br>        mTopWidth = t.getDimension(R.styleable.MyTextView_tv_top_width, dip2px(context, 15));<br>        mTopHeight = t.getDimension(R.styleable.MyTextView_tv_top_height, dip2px(context, 15));<br>        mRightWidth = t.getDimension(R.styleable.MyTextView_tv_right_width, dip2px(context, 15));<br>        mRightHeight = t.getDimension(R.styleable.MyTextView_tv_right_height, dip2px(context, 15));<br>        mBottomWidth = t.getDimension(R.styleable.MyTextView_tv_bottom_width, dip2px(context, 15));<br>        mBottomHeight = t.getDimension(R.styleable.MyTextView_tv_bottom_height, dip2px(context, 15));<br>        t.recycle();<br>    }<br> <br>    @Override<br>    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {<br>        //让RadioButton的图标可调大小 属性:<br>        Drawable drawableLeft = this.getCompoundDrawables()[0];//获得文字左侧图片<br>        Drawable drawableTop = this.getCompoundDrawables()[1];//获得文字顶部图片<br>        Drawable drawableRight = this.getCompoundDrawables()[2];//获得文字右侧图片<br>        Drawable drawableBottom = this.getCompoundDrawables()[3];//获得文字底部图片<br>        if (drawableLeft != null) {<br>            drawableLeft.setBounds(0, 0, (int) mLeftWidth, (int) mLeftHeight);<br>        }<br>        if (drawableTop != null) {<br>            drawableTop.setBounds(0, 0, (int) mTopWidth, (int) mTopHeight);<br>        }<br>        if (drawableRight != null) {<br>            drawableRight.setBounds(0, 0, (int) mRightWidth, (int) mRightHeight);<br>        }<br>        if (drawableBottom != null) {<br>            drawableBottom.setBounds(0, 0, (int) mBottomWidth, (int) mBottomHeight);<br>        }<br>        this.setCompoundDrawables(drawableLeft, drawableTop, drawableRight, drawableBottom);<br> <br>        super.onMeasure(widthMeasureSpec, heightMeasureSpec);<br> <br>    }<br> <br>    public static int dip2px(Context context, float dpValue) {<br>        float scale = context.getResources().getDisplayMetrics().density;<br>        return (int) (dpValue * scale + 0.5f);<br> <br>    }<br> <br>    public void setDrawableRight(@DrawableRes int drawableRight) {<br>        Drawable drawableEnd = getResources().getDrawable(drawableRight);<br>        int size = dip2px(getContext(), 10);<br>        drawableEnd.setBounds(0, 0, size, size);<br>        setCompoundDrawables(null, null, drawableEnd, null);<br>        setCompoundDrawablePadding(size);<br>    }<br> <br>    public void setDrawableRight(@DrawableRes int drawableRight, int size, int padding) {<br>        Drawable drawableEnd = getResources().getDrawable(drawableRight);<br>        size = dip2px(getContext(), size);<br>        drawableEnd.setBounds(0, 0, size, size);<br>        setCompoundDrawables(null, null, drawableEnd, null);<br>        setCompoundDrawablePadding(dip2px(getContext(), padding));<br>    }<br> <br>    public void setDrawableLeft(@DrawableRes int drawableRight, int size, int padding) {<br>        Drawable drawableStart = getResources().getDrawable(drawableRight);<br>        size = dip2px(getContext(), size);<br>        drawableStart.setBounds(0, 0, size, size);<br>        setCompoundDrawables(drawableStart, null, null, null);<br>        setCompoundDrawablePadding(dip2px(getContext(), padding));<br>    }<br> <br>    public void setDrawableTop(@DrawableRes int top, int size, int padding) {<br>        Drawable drawableTop = getResources().getDrawable(top);<br>        size = dip2px(getContext(), size);<br>        drawableTop.setBounds(0, 0, size, size);<br>        setCompoundDrawables(null, drawableTop, null, null);<br>        setCompoundDrawablePadding(dip2px(getContext(), padding));<br>    }<br> <br>    public void setDrawableTop(@DrawableRes int drawableTop) {<br>        Drawable drawabletop = getResources().getDrawable(drawableTop);<br>        int size = dip2px(getContext(), 10);<br>        drawabletop.setBounds(0, 0, size, size);<br>        setCompoundDrawables(null, drawabletop, null, null);<br>        setCompoundDrawablePadding(size);<br>    }<br> <br>    public void setDrawableBottom(@DrawableRes int bottom, int size, int padding) {<br>        Drawable drawableBottom = getResources().getDrawable(bottom);<br>        size = dip2px(getContext(), size);<br>        drawableBottom.setBounds(0, 0, size, size);<br>        setCompoundDrawables(null, null, null, drawableBottom);<br>        setCompoundDrawablePadding(dip2px(getContext(), padding));<br>    }<br> <br>    public void setDrawableLeft(@DrawableRes int drawableLeft) {<br>        Drawable drawableStart = getResources().getDrawable(drawableLeft);<br>        int size = dip2px(getContext(), 15);<br>        drawableStart.setBounds(0, 0, size, size);<br>        setCompoundDrawables(drawableStart, null, null, null);<br>        setCompoundDrawablePadding(dip2px(getContext(), 5));<br>    }<br> <br>    public void setDrawableNone() {<br>        setCompoundDrawables(null, null, null, null);<br>    }<br> <br>}

​5、自定义属性

 

1
<br> <declare-styleable name="MyTextView"><br>        <attr name="tv_left_width" format="dimension" /><br>        <attr name="tv_left_height" format="dimension" /><br>        <attr name="tv_top_width" format="dimension" /><br>        <attr name="tv_top_height" format="dimension" /><br>        <attr name="tv_right_width" format="dimension" /><br>        <attr name="tv_right_height" format="dimension" /><br>        <attr name="tv_bottom_width" format="dimension" /><br>        <attr name="tv_bottom_height" format="dimension" /><br>    </declare-styleable>

 

以上就是 直播系统app源码,TabLayout:自定义字体大小实现的相关代码,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(143)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示