Day3(下) TabLayout的用法大全及其属性详解

TabLayout+Banner轮播滑动+GridView+PullToRefreshListView activity_main布局 没有用base <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"... 阅读详情

通常在ViewPager的上方,我们都会放一个标签指示器与ViewPager进行联动,同样“爱阅”也是遵照这样的设计风格进行设计和实现的。可选择的实现方案其实有很多,比如:TabPageIndicator或者GitHub上的开源框架PagerSlidingTabTrip。但是这些都是第三方的而且也已经比较老了,所以我使用Android自带的控件TabLayout来实现这个效果,而且TabLayout更为强大,因为Tab标签可以使用自定义View并且可以实现多种属性的设置。

首先来看下效果图:

点此进入目录:[干货] 十天 教你从创意到上线APP

一、TabLayout的基本使用

1、在布局中加入该控件

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout_main"
        style="@style/MyCustomTabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="center"
        android:background="#D2A2CC"
        app:tabMode="scrollable" />

2、在代码中找到并设置

    @BindView(R.id.tab_layout_main)
    TabLayout mTabLayout;
    mTabLayout.addTab(tablayout.newTab().setText("新闻"));
    mTabLayout.addTab(tablayout.newTab().setText("天气"));
    mTabLayout.addTab(tablayout.newTab().setText("娱乐"));
显示效果

向上滑动还可收缩成这样:

这样我们就把最简单的用法掌握了,但如果你想要往里面加入一些个性化设置也是可以的,比如你想加入图片的话,可以这么办:

    mTabLayout.addTab(tablayout.newTab().setText("新闻").setIcon(R.mipmap.icon1));
    mTabLayout.addTab(tablayout.newTab().setText("天气").setIcon(R.mipmap.icon2));
    mTabLayout.addTab(tablayout.newTab().setText("娱乐").setIcon(R.mipmap.icon3));

二、结合ViewPager施展魔法

基本的设置结束了,那么这个时候我们要实现最开始的效果 —— 滑动ViewPager的同时改变Tab的状态,要真么办呢?

1、首先要准备好ViewPager的数据

在我们上午实现的ViewPagerAdapter中重写getPageTitle()方法,以此返回每个ViewPager的标题的数据,代码如下:

    @Override
    public CharSequence getPageTitle(int position) {
        return mCategoryList.get(position).getName();
    }

这个方法里对应返回的值就是我们最终想要显示在Tab中的标题,所以你要可以根据你自己的业务场景来进行实现。

2、把ViewPager和TabLayout进行绑定

代码很简单,一行搞定:

    mTabLayout.setupWithViewPager(mViewpager);

没错,setupWithViewPager()是TabLayout自带的方法,就是专门用来和ViewPager视图进行绑定的。如果没有其他问题,你会发现我们的基本视图效果已经实现了,但是如果你想要实现更多的属性效果,可以参看接下来总结的一些常用属性。

三、TabLayout常用属性

1、颜色改变

  • 改变选中字体的颜色
app:tabSelectedTextColor="@android:color/holo_orange_light"
  • 改变未选中字体的颜色
app:tabTextColor="@color/colorPrimary"
  • 改变指示器下标的颜色
app:tabIndicatorColor="@android:color/holo_orange_light"
  • 改变整个TabLayout的颜色
app:tabBackground="color"

2、尺寸与图标

  • 改变TabLayout内部字体大小
app:tabTextAppearance="@android:style/TextAppearance.Holo.Large"
  • 改变指示器下标的高度
app:tabIndicatorHeight="4dp"
  • 添加图标
mTabLayout.addTab(tabLayout.newTab().setText("Tab A").setIcon(R.mipmap.ic_launcher));
  • 内容的显示模式
app:tabGravity="center"  // 居中,如果是fill,则是充满

3、宽度限制

  • 设置最大的tab宽度
app:tabMaxWidth="xxdp"
  • 设置最小的tab宽度
app:tabMinWidth="xxdp"

4、TabLayout的监听事件

选中了某个tab的监听事件OnTabSelectedListener()

    tabLayout.setOnTabSelectedListener(newTabLayout.OnTabSelectedListener() {

        @Override
        public voidonTabSelected(TabLayout.Tab tab) {
            //选中了tab的逻辑
        }

        @Override
        public voidonTabUnselected(TabLayout.Tab tab) {
            //未选中tab的逻辑
        }

        @Override
        public voidonTabReselected(TabLayout.Tab tab) {
            //再次选中tab的逻辑
        }
    });

至此为止,我们TabLayout的最常用属性就介绍完毕了,如果你还有更复杂的需求,比如:Tab点击缩放的实现,可以参考该链接:TabLayout使用方法详解

联系方式:

简书:WillFlow
优快云:WillFlow
微信公众号:WillFlow

微信公众号:WillFlow

HFSS仿真中如何提取最大E/H场强与频率关系曲线 本文详细讲解了在HFSS仿真中提取最大E/H场强与频率关系曲线的完整流程。通过使用场计算器(Field Calculator)和创建场报告,工程师可以准确获得器件在整个频带内的电场或磁场强度峰值,并进一步推导出关键的功率容量曲线,为高功率射频器件(如滤波器、耦合器)的设计提供至关重要的安全评估依据。 阅读详情

相关推荐

Keil5安装教程(保姆级)Keil5mdk安装步骤

6、复制生成的激活码,粘贴在New License ID Code处,点击Add LIC,即可成功激活mdk,显示mdk的使用期限。6、复制生成的激活码,粘贴在New License ID Code处,点击Add LIC,即可成功激活C51,显示mdk的使用期限;3、在安装文件中点击keygen.exe文件,粘贴复制过的CID,选择Target为C51,点击Generate,生成激活码;4、在弹出的界面中会自动安装在安装keil的路径,点击“Next”进行后续安装,安装完成后,点击“Finish”。

m6886258的博客 9万+

TabLayout基本用法

原文地址:https://blog.youkuaiyun.com/m0_37168878/article/details/73326095   1、需求 TabLayout+Viewpager+Fragment,在tab中显示一个红点,用来标识是否有新消息未读,需要实时刷新。又或者tab中显示的内容需要自定义,不止显示文字,文字还需要不同的背景变换。 2、TabLayout相关属性 2.1 、 继承...

阿达的博客 1万+

SDI-12协议与STM32 进行uart通信

其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR_OUT_SDI使能stm32输出,拉高DIR_OUT_SDI失能输出,串口配置8位数据位,偶校验,1位停止位,1200波特率。示波器测试得到传感器的应答信号如下:第一个是唤醒信号,拉高电平13毫秒,之后保持20毫秒低电平,第二个数据帧是激活信号,即ascii码: "0!",第三个是传感器的应答信号:"0\r\n"

weixin_42186805的博客 4402

侧拉+pullToRefresh+无限轮播+tabLayout+fragment

activity_main     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="matc

xiaozi_11的博客 449

别再手动切换了!用SP3485+三极管搞定RS485自动收发电路(附完整原理图)

本文详细介绍了如何利用SP3485芯片和三极管设计RS485自动收发电路,解决传统手动切换带来的IO资源占用和软件复杂度问题。通过原理分析、电路设计拆解和实战注意事项,帮助工程师打造稳定可靠的自动收发通信模块,显著提升系统性能和可靠性。

weixin_26833939的博客 512

别再只放按钮了!巧用微信小程序‘长按识别’功能,打造无缝加群体验

本文深入探讨了微信小程序'长按识别'功能在社群运营中的创新应用,通过简化加群流程至一步操作,显著提升用户转化率。文章详细解析了技术实现细节、UI/UX设计策略,并对比了与企业微信API的适用场景,为开发者提供打造无缝加群体验的完整解决方案。

weixin_42627853的博客 434

TabLayout使用介绍(com.google.android.material.tabs.TabLayout)

指示器的标签分为两种情形,一种是固定的一般3~5个标签,另一种的移动的标签;开发中经常会使用MD风格的TabLayout控件,这个控件什么都很好,就是指示器的下滑线和文字不能够对齐,这一点用过的同学都会知道的,我也在网上找了好久,也找到不到现成的,只好自己动手来写一个啦! 先声明一下,我是吧指示器标签分两种情形来写的,固定和不固定,没有合并,因为不是继承同一个控件;另外要多看看TabLayout的...

热爱技术 2万+

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

android app实现轮播的图片视频播放video,仿淘宝商品详情的视频播放(android)

这段时间在学习开发android app 记录一下实现仿淘宝图片视频切换的功能,直接拿来用即可,大家有什么问题可以共同交流 <iframe height=498 width=510 src="视频地址">

qq_42097490的博客 2857

使用 Python 爬虫获取中国证券市场公司公告数据

本文详细介绍了如何使用 Python 爬虫技术从中国证券市场(如巨潮资讯网)爬取公司公告数据。通过分析网页结构,编写爬虫脚本,抓取并存储公告信息,我们实现了从网页抓取数据的全过程。此外,本文还展示了如何应对反爬虫机制,并介绍了数据分析与可视化的基本方法。未来,我们可以通过机器学习等技术进一步挖掘公告中的潜在信息,例如,通过情感分析对公告内容进行情绪分类,或者预测某些公告类型对股市走势的影响等。希望本文能帮助你理解如何使用 Python 爬虫技术获取和处理证券市场的数据,并为你的数据分析项目提供帮助。

2201_76125261的博客 1887

【查找单入口空闲区域】-python实现-附ChatGPT解析

时间限制:1s 空间限制: 256MB 限定语言:不限题目描述:给定一个 m x n 的矩阵,由若干字符X’和 O构成,"X表示该处已被占据,O表示该处空闲,请找到最大的单入口空闲区域。空闲区域是由连通的O组成的区域,位于边界的O可以构成入口,单入口空闲区域即有且只有一个位于边界的o作为入口的由连通的O组成的区域如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。第一行输入为两个数字,第一个数字为行数m,第二个数字列数n,两个数字以空格分隔,1

sinat_29950703的博客 243

Day7 TabLayout

安卓TabLayout TabLayout的简介 Fragment+ViewPager+TabLayout组合使用 简介 Tablayout继承自HorizontalScrollView用于页面切换指示器 TabLayout 是属于 com.android.support:design 包的控件,所以需要依赖该包 implementation 'com.android.support:design...

qq_45233155的博客 198

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数。

qq_39541524的博客 827

Day07 Fragment+ViewPage+TabLayout

Fragment+ViewPage+TabLayoutTabLayout介绍注意事项代码展示(案列)效果展示TabLayout的几个常用属性值 TabLayout介绍 TabLayout 是一个横向标签显示的布局,效果就是现在很多新闻客户端的那种顶部标签展示效果,并支持指示器、 ViewPager 联动 注意事项 1、Android最新版本 也就是AndoirdX是引用不到TabLayout的,必...

huang_one_jun的博客 297

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Fragment+ViewPager+TabLayout

Fragment+ViewPager+TabLayoutTabLayout的介绍案例 TabLayout的介绍 Tablayout继承自HorizontalScrollView,用作页面切换指示器,因使用简便功能强大而广泛使用在App中。 官方介绍,TabLayout 是一个横向标签显示的布局,效果就是现在很多新闻客户端的那种顶部标签展示效果,并支持指示器、 ViewPager 联动 TabLayout 的几个常用属性值: app:tabBackground 标签布局的背景色 app:tabIndica

SeeYouTomorrow_s的博客 373

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TabLayout滑动效果显示

布局文件     android:layout_width="match_parent"     xmlns:app="http://schemas.android.com/apk/res-auto"     android:orientation="vertical"     android:layout_height="match_parent">

chen970714的博客 701

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

第七单元:Fragment+ViewPager+TabLayout

Fragment+ViewPager+TabLayoutTabLayout的介绍 TabLayout的介绍 Tablayout继承自HorizontalScrollView,用作页面切换指示器,因使用简便功能强大而广泛使用在App中。 官方介绍,TabLayout 是一个横向标签显示的布局,效果就是现在很多新闻客户端的那种顶部标签展示效果,并支持指示器、 ViewPager 联动 简单使用 按...

shuai_ge_feng的博客 2137

TabLayout的使用

layout布局 activity_main &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" ...

weixin_44668084的博客 154

Viewpager+tablayout

day007Viewpager+tablayout Viewpager+tablayout //布局文件 <com.google.android.material.tabs.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" app:tabIndicatorColor="@co

weixin_52360287的博客 408

Tablayout基本使用

注意依赖: compile 'com.android.support:design:26+' xml文件: xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sche

mayn666的博客 261

第七单元 Fragment与ViewPager与TabLayout的组合使用

Fragment与ViewPager与TabLayout一、TabLayout的介绍1.使用TabLayout的步骤1.引入 com.android.support:design2.MainActivity的xml文件的创建3.MainActivity4.适配器5.最后创建Fragment即可2.TabLayout 的几个常用属性值 一、TabLayout的介绍 Tablayout继承自Horiz...

qq_45272980的博客 538

今日头条页面 TabLayout

导包 activity_xml布局 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;RelativeLayout android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;wrap_content&

chuanchuandaxia的博客 574

安卓5.0之后的新控件TabLayout

安卓5.0之后的新控件TabLayout 可以实现类似于viewpager的效果 使用起来更方便 主界面代码: package my.qq.com.day0715; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragme

纯植物 2816

tablayout

package com.example.day12tablayout; import android.support.design.widget.TabLayout; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.ap

healer1的博客 249

Android 顶部导航栏(TabLayout+ViewPager2)

文章目录结构布局逻辑代码1.Adapter2.Fragment页面 结构 布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

weixin_45155865的博客 8127
上一篇: Day3(上) 一篇文章带你吃透ViewPager的三大用法及刷新问题
下一篇: Day4 基于DrawerLayout的菜单栏设计
WillFlow
博客等级 码龄11年 61粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值