[Android]关于TextView颜色选择器到正确使用——动态添加带有ICON的TextView到TabLayout中

Android控件-TabLayout使用介绍 TabLayout简述简单示例属性介绍tabIndicatorFullWidthtabRippleColortabTextAppearancetabModetabIndicatorColortabIndicatorHeighttabIndicatorGravity 简述 TabLayout是Android support中的一个控件android.support.design.widget.Tab... 阅读详情

做小项目到时候需要自建TabLayout并且自定义TabItem,折腾了一下午,实现了功能,遇到两个坑予以记录:

1.添加自定义View到TabLayout中

TabLayout自带到TabItem拓展性太差,图片和文字到位置不能自由定制,导致显示效果不佳,因此最好自己动态添加Tab。本次是添加了一个带有Icon的TextView到TabLayout中,具体实现代码如下:

for (int i = 0; i < 4; i++) {
    TextView newTab = new TextView(BaseMyApplication.mContext);
    Drawable drawable = null;
    String text = null;
    switch (i) {
        case 0:
            drawable = getResources().getDrawable(R.drawable.selector_home);
            drawable.setBounds(0, 0, 50, 50);
            text = "首页";
            break;
        case 1:
            drawable = getResources().getDrawable(R.drawable.selector_expert);
            drawable.setBounds(0, 0, 50, 50);
            text = "专家";
            break;
            case 2:
            drawable = getResources().getDrawable(R.drawable.selector_competition);
            drawable.setBounds(0, 0, 50, 50);
            text = "赛场";
            break;
        case 3:
            drawable = getResources().getDrawable(R.drawable.selector_my);
            drawable.setBounds(0, 0, 50, 50);
            text = "咨询";
            break;
    }

    newTab.setCompoundDrawables(null, drawable, null, null);
    newTab.setText(text);
    newTab.setTextSize(16);
    newTab.setGravity(Gravity.CENTER_HORIZONTAL);
    ColorStateList colorStateList = getResources().getColorStateList(R.color.selector_tab_item);
    newTab.setTextColor(colorStateList);
    tableLayout.addTab(tableLayout.newTab().setCustomView(newTab));
}

其中主要的代码就是TabLayout的addTab方法,传入的是一个Tab对象,而Tab对象是通过TabLayout的newTab方法创建的,创建以后通过设置CustomView可以设置Tab的实际View。

2.为TextView设置正确到颜色选择器

在为TextView配置颜色选择器的时候又遇到了坑,通过getColor的方法获取到的颜色只有一个值,即使使用color是一个selector还是一个值,所以不能用此方法,应该使用另一个方法,具体实现代码如下:

TextView textview = new TextView(context);
ColorStateList colorStateList = getResources().getColorStateList(R.color.selector_tab_item);
textview.setTextColor(colorStateList);

使用getColorStateList方法可以获得一个对应状态的颜色列表,设置给TextVIew。
同时需要注意的时在TabLayout中,TextView的切换状态为Selected,因此selector中的state必须写为selected,写为其他状态均不能达到选择Tab后切换状态的效果,具体实现代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="@color/tabred" android:state_selected="true" />
  <item android:color="@color/tabblack" android:state_selected="false" />
</selector>
Android TabLayout+ViewPager黄金组合实战指南 TabLayout和ViewPager是Android原生分页导航的核心组件,基于PagerAdapter实现Fragment页面容器与顶部标签栏的双向协同。其原理在于TabLayout负责UI渲染与用户交互,ViewPager承担页面调度与生命周期管理,二者通过setupWithViewPager建立松耦合绑定。该方案具备零第三方依赖、全版本兼容、调试友好等技术价值,广泛应用于电商详情页、教育App模块切换、政务平台多栏目等场景。相比ViewPager2需自行实现Tab逻辑,或BottomNavigati 阅读详情

相关推荐

Android TabLayout + ViewPager2 导航实现与避坑指南

TabLayout 和 ViewPager2 是 Android 中实现标签式页面导航的基础组件,属于 Fragment 容器与 UI 指示器协同工作的典型范式。其核心原理是通过声明式绑定(setupWithViewPager)自动同步页面滑动与标签选中状态,避免手动监听导致的线程调度和生命周期错乱问题。技术价值在于轻量、稳定、低学习成本,且深度集成 AndroidX 生命周期管理,显著降低 Fragment 重建丢失、状态不同步等高频崩溃风险。广泛应用于新闻、电商、工具类 App 的顶部多标签页场景,尤其

440

实现 TabLayout 下标与文字等长,选中字体大小改变

设置系统TabLayout 指示器与文字等长,改变选中字体大小改变

光年的博客 834

Android FAB 实战指南:从 Material 设计规范到 CoordinatorLayout 协同

Floating Action Button(FAB)是 Material Design 中定义的核心操作入口,其本质不是普通按钮,而是融合布局约束、滚动响应、Snackbar 协同与深色模式适配的交互系统。理解 FAB 需从 Android 的嵌套滚动协议(NestedScrollingParent)和 CoordinatorLayout 的 Behavior 机制出发——前者决定 FAB 如何响应 RecyclerView 滚动,后者实现与 Snackbar 的自动避让与上推。技术价值在于提升可访问性(

weixin_33716941的博客 458

Android TabLayout操作文字

需求: 有时 TabLayout 需要对选中的文字进行操作 可通过以下方法得到文件控件 TextView tab_title = (TextView) (((LinearLayout) ((LinearLayout) tab_layout.getChildAt(0)).getChildAt(tab_layout.getTabAt(0).getPosition())).getChildAt(...

duke_knight的博客 878

TabLayout修改下划线

TabLayout修改下划线

Android Tab(TabLayout+Fragment)实现源码

Android Tab(TabLayout+Fragment)实现源码

Android TextView动态设置字体颜色选择器

Android 在用字体颜色选择器时: 一种在xml文件中直接设置textColor通常会用这种情况,这种情况字体颜色Selector挺好用的: android:textColor="@color/selector_delete_color" 然而,在代码中设置字体颜色选择器时用setTextColor直接将选择器id放里面并没有卵用。 查资料后知道需要设置: view.setTextCo...

zhao2017的博客 6043

【Docker】Docker安装Hadoop分布式集群

hadoop目录安装在:/usr/local/hadoop-2.7.0/etc/hadoop。访问Hadoop102:9870,查看是否能够看到hdfs界面。访问hadoop103:8088,查看能够看到yarn界面。在yarn上可以看到执行情况。

weixin_46429290的博客 3459

TabLayout的用法进行总结和归纳

TabLayout的用法进行总结和归纳

LinWei的博客 1万+

银河麒麟(ky10)x86与arm双架构下编译zlmediakit的实战指南

本文提供了在银河麒麟(ky10)操作系统上,针对x86与arm双架构编译部署流媒体服务器zlmediakit的完整实战指南。文章详细阐述了从环境准备、依赖安装、代码获取到编译构建与测试的全过程,重点解析了两种CPU架构下的关键差异与注意事项,帮助开发者高效完成国产化平台上的流媒体服务搭建。

weixin_29306875的博客 99

PLS-PM with R 偏最小二乘路径建模 (R语言)

1. 引入 1.1. 安装plspm包 plspm 是一个用于执行偏最小二乘路径建模分析的 r 程序包。 在 CRAN 上可以免费下载: Http://cran.r-project.org/web/packages/plspm/index.html. 此后,通过以下代码在r中安装并加载该程序包即可。 install.packages("plspm") library("plspm") 2. 一些简单概念 2.1. 潜变量和观测变量 不少变量如满意度、成功指数是无法通过观测得到

Wowlittlemoon的博客 1万+

减小TabLayout高度而不影响每个tab展示的几种方法

在Support Design库中有一个新的组件TabLayout,配合TabItem实现tab页面的形式。 但是图标和文字组合的tab的默认情况下,TabLayout中的tab太高,占据太多布局。 但是如果直接将TabLayout高度改小,很容易出现图标显示不全的情况,因为图标和字体及两者的间距没有跟着改变。 这时可以从几个方面处理: 1、去掉指示线或改变其高度 每个t...

公众号:BennuCTech 5314

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 626

Android 10.0 UI开发环境搭建与实战指南

Android UI开发是构建移动应用界面的核心技术,基于View和ViewGroup的视图体系实现组件化布局。通过Android Studio这一官方IDE,开发者可以高效完成从环境搭建到界面设计的全流程工作。在Android 10.0中,ConstraintLayout成为推荐布局方案,配合Material Design组件库能显著提升开发效率和视觉一致性。现代Android开发强调响应式设计理念,需要适配不同屏幕尺寸、密度和系统主题(如深色模式)。热门的RecyclerView组件通过ViewHold

weixin_30607659的博客 415

UDF学习(二)基础数据类型与常见宏

thread_loop_c (t,d) 必须与begin_c_loop (c,t)同时使用,但begin_c_loop (c,t)不一定与thread_loop_c (t,d)同时使用。同理thread_loop_f(t,d)必须与begin_f_loop (c,t)同时使用,但begin_f_loop (c,t)不一定与thread_loop_f(t,d)同时使用。begin_c_loop (c,t) 在计算域内对网格单元进行循环。c_face_loop (c,t)遍历网格单元上的所有网格面。

weixin_44386973的博客 855

无人驾驶Autoware导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对无人驾驶Autoware介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2397

Android Toolbar深度解析:从设计原理到沉浸式状态栏实战

在Android应用开发中,UI组件是构建用户界面的基础单元,其设计原理与实现方式直接影响应用的用户体验和开发效率。Toolbar作为Material Design的核心导航组件,经历了从ActionBar到高度可定制化View的演变,其本质是一个ViewGroup,赋予了开发者布局自由和深度样式控制的能力。这一转变不仅体现了Android UI框架的开放与成熟,更在工程实践中显著提升了界面开发的灵活性。通过掌握Toolbar的模块化结构(导航按钮、标题、菜单、自定义内容区域)和样式定制方法,开发者能够高效

weixin_33843947的博客 506

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3022

android tabhost 每个item的选中改变背景,和标题

tabHost.setOnTabChangedListener(new OnTabChangeListener() {                  @Override         public void onTabChanged(String tabId) {                          if(tabId.equals("标题1")){//如果选中第一个t

asde1239的专栏 742

1、电路分析知识全解析:从基础到实践应用

本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。

iii12的专栏 159

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 实现图片icon加在textview内容中

效果如下 tvMeDec.setText(Html.fromHtml(descString(), getImageGetterInstance(), null)); private String descString() { return "生活不止眼前的苟且,还有诗和远方的苟且 " + "<img src='" + R.mipmap.icon_

黄孝果的博客 3906

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android-自定义TextView在文字内容末尾添加图片icon、可以添加间距

android Textview文字内容末尾添加icon,箭头灯样式

夏天大大的博客 1191

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android修行手册 - TabLayout全解析(上)-常用方法

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

空名先生 4775

tablayout 动态改变标题_Android TabHost 动态修改图标或者动态改变标题

那时客户需要实现在TabHost标题上动态显示从数据库获取的个数。起初这样思考的,从数据库 获取个数是非常简单,但是要把获取的个数显示在TabHost标题,思前想后,想用Handler来异步实现消息传递。如果将图标或者标题的变量设置为全局变量,你们应该知道我的目的吧。也就是为了在这个类不断的进行赋值。先来简单的认识下TabHost吧。xml的文件代码:android:orientation="ve...

weixin_39804329的博客 330

android TextView的颜色选择器和背景选择器selecter

大家好,有没有朋友在使用textview的时候,想要改变背景颜色,觉得很简单,用的时候,直接网上搜索就行了,有时候总是在需要的时候去找,但是,有的时候,找到了,却发现不能用,或者没有效果,那是因为,你照搬代码的原因,有时候,错误就在那一行或者一个单词的地方,我在这里,就简单保存个座位记录,以后,就不需要再每次都去搜索了,直接翻看,有需要的伙伴,直接用就行了,有帮助的话欢迎评论点赞哈,谢谢大家,话不...

LSJ 1435

Android之 颜色选择器

颜色选择器

qq_29848853的博客 4254
上一篇: [Java]public <T> void method,此地泛型的意思
下一篇: [Android]RecyclerViewAdapter的封装
runstoppable
博客等级 码龄10年 1粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值