直播系统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:自定义字体大小实现的相关代码,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现