前言 Tablayout继承自HorizontalScrollView,可以用作顶部标签效果、底部导航栏效果。一般多与ViewPager一起使用。 首先上几个效果图。...图: 使用方法 下面我们来看如何使用, 第一步,先在gradle引入支持包 implementation 'com.android.support:design:26.0.0' 第二步,在布局文件中添加布局...tabTextColor:标签显示的默认颜色 tabSelectedTextColor:标签被选中的时候的颜色 tabMode:这个属性有两个取值,一个是fixed,不管tab标签字多字少,平分当前tablayout...tabNormal; @BindView(R.id.tab_icon) TabLayout tabIcon; @BindView(R.id.tab_more) TabLayout...然而,原生控件有很多的呆笨性。比如很多的UI和场景需求都是要求文字下面的短线是一个小于文字的固定值。再比如我们说的作为底部导航栏,如果直接设置tab的icon,会出现icon变形等问题。
前言 前面介绍了TabLayout的基本属性和基本的使用方法。我是传送门。 真实的业务场景中,很多的效果,原生的TabLayout,并不支持。...例如下滑线短于文字的效果,底部导航栏效果,标签文字选中是需要加粗效果等等。 所以我们需要使用TabLayout的自定义tab标签。 先上图。 ?...* 此处不能使用tabLayout的setupWithViewPager()方法,否则会造成自定义view失效 */ private void initListener() {...2、viewpager和TabLayout标签进行联动的时候,不可以使用TabLayout的setupWithViewPager()方法,而是要通过ViewPager的addOnPageChangeListener...否则会造成自定义的CustomeTab被TabLayout默认生成的标签覆盖掉。 3、在布局文件中,需要将TabLayout的tabIndicatorHeight设为0。
TabLayout是开发中经常使用到的控件,经常与ViewPager一起配合使用,一组tab,可以点击、可以滚动。...基本操作 使用之前,首先需要在gradle文件中加入design库, implementation 'com.android.support:design:28.0.0' 首先看一下最默认的行为与效果。...padding参数,可以使用tabPadding进行设置,比如: 可以看到预览图的效果如下: TabLayout app:tabPaddingTop...当在xml布局中添加了很多TabItem后,预览效果如下图: 这时使用的就是FIXED模式,可以看到TabLayout默认就是FIXED模式;当改成MODE_SCROLLABLE后, 预览样式如下图...总结 至此,TabLayout的基本用法也就是这样了;除了这个,还有与Toolbar以及协调布局共同使用的情况,这个以后有机会会继续深入的学习下。
1.setupWithViewPager以后之前已经设置好的tab的视图消失了 看源码: setupWithViewPager里面有这段 final PagerAdapter...tab) { } }); (先不看注释部分)我们一般都按照上面的写,但是文字颜色在切换的时候会有问题。...当我们先点击Tab1,再点击Tab2的时候(仅计算Tab2的步骤)。会先调用onTabUnselected,然后调用onTabSelected。...基于这样的调用,我们可以在onTabUnselected里面先恢复到默认的颜色,然后再在onTabSelected设置点击的颜色 最后附上我的代码 public class MainActivity extends...数组 int licons[] = {R.drawable.custom, R.drawable.stock, R.drawable.order}; //选中状态下的icon数组
首先TabLayout一般都是配合Viewpager使用的,Viewpager里的Fragment随着顶部的Tab一起联动,这种场景再熟悉不过了。...但假如我的设计里不需要指示条怎么办,好像没发现隐藏的API,那也很简单。...TabItem 在高版本的design库里已经有了TabItem,TabItem是作为TabLayout的子View而配合使用的,点进去发现其实代码很简单,就是个自定义View。 ?...总体来讲Tablayout的坑还是蛮多的,很多API都没提供,或者提供了但留了很多坑,这很google,一方面给你一个很常用的控件,一方面这个控件又留了很多坑,最后这个控件带给你无限想象和发挥,根据自己的想法...到现在我们还没有上TabLayout的用法相关代码,下面我们来一个相对标准的使用简介,通常情况下大家会这么写。 ? ? ? 运行起来之后,居然是这个样子的。我的标题呢? ?
TabLayout 使用进阶 前言 正文 一、控件基础使用 ① 设置标题 ② 设置图标 ③ 设置下划线 二、分类页面 (TabLayout + ViewPager + Fragment) ① 创建...一、控件基础使用 首先在现在的版本中,TabLayout已经迁移到androidx下了。...这样看起来是不是很像一些App主页面的底部操作栏了,这个后面我会讲到的,怎么使用TabLayout+ViewPager+Fragment打造App主页面。...基本上这个就能满足你的需求了,那么这个TabLayout的基本使用就介绍完了,有想要我添加的可以评论区留言哦,否则我就会以为你们都会了。...我们来分析一下啊,首先左边不出意外是一个列表,它的表现形式可以有多种,你可以使用RecyclerView,也可以使用TabLayout,毫无疑问我要使用TabLayout,而右边的就是一个ViewPager
1.结合ViewPager使用 这是最常见的用法了,实现也比较简单。...2.点击滑动选中,类似RadioGroup的效果 [tablayout02.gif] 不过它与RadioGroup不同在于它有下划线可以滑动,更动感......(TabLayout.Tab tab) { } }); 3.点击滑动到屏幕中央,并再次点击可取消 [tablayout03.gif] 这样的效果很实用,很多App都会有这样的效果,以前我都是用...HorizontalScrollView来实现的,设置点击的item滑动到屏幕中央。...后来想想TabLayout继承自HorizontalScrollView,选中也会自动滚动并居中,于是就选用了它来实现,相对于直接使用HorizontalScrollView代码量更少。
前言 TabLayout仍旧是移动端比较常用的一个控件,这里分析一下TabLayout,分别从下面几个方面进行解析: 基本构成及使用TabLayout 原理解析 开发扩展 1.TabLayout...之前的TabLayout是在support中使用,新的引用全部放到老AndroidX中 image.png 使用老的库需要用 implementation 'com.android.support:design...2.2 xml配置tab 还可以通过使用将项目添加到布局中的TabLayout TabItem。...[表格] 3.2 典型的使用场景 (1)代码添加tab //TabLayout的基本使用 for(int i=0;i使用全解,一篇就够了 [5] TabLayout的简单运用和若干问题的解决 [6] MaterialDesign之对TabLayout的探索 [7] https://github.com
前言 为什么会有这篇文章呢,是因为之前关于TabLayout的使用陆陆续续也写了好几篇了,感觉比较分散,且不成体系,写这篇文章的目的就是希望能把各种效果的实现一次性讲齐,所以也有了标题的「看这篇就够了」...TabLayout作为导航组件来说,使用场景非常的多,也意味着要满足各种各样的需求。...play;有了这两点,基本可以放心大胆的使用官方组件了。...同时在TabLayout滑动的过程中也应该加上判断显示的逻辑: // mBinding.tabLayout7.setOnScrollChangeListener() // min api...所以,经过这种你来我往的操作之后,设置TabLayout的选中下标和设置ViewPager的选中下标,其实效果是一毛一样的,因为联动起来了… 另外,FragmentPagerAdapter已经废弃了,官方推荐使用
前言 ---- Tablayout 继承自 HorizontalScrollView,用作页面切换指示器,因使用简便功能强大而广泛使用在 App 中。...所以,就在各种复杂的情况下打磨,渐渐地就变得圆润。这里,有 Tablayout 的各种使用场景,拿去指着产品经理说:你要哪个给你哪个。...▐ 1.2 使用场景 常用属性: app:tabIndicatorColor :指示线的颜色 app:tabIndicatorHeight :指示线的高度 app:tabSelectedTextColor...各种使用场景 ---- ▐ 2.1默认使用样式,结合Viewpager使用 效果图: ?...: 根据 title 长度,设置文字 title,设置 fragment,设置 viewpager联动,使用的是 Tablayout 默认属性。
android:state_focused="false" android:state_pressed="false" /> 第二步 在drawable文件夹下建立选中效果的文件...schemas.android.com/apk/res/android" > 第三步 在drawable文件夹下建立未选中效果的文件...android" > 最后 建立一个style TabLayout...item name="tabIndicatorColor">#ff00ff 2dp 重点使用该属性
通常情况下我们要修改TabLayout下划线(tabIndicator)的宽度的话,常用的有两种方案: 1,反射重新计算宽度 2,通过setCustomView的方式自定义item 第一种在Android...9.0已经失效了,第二种如果使用场景较多,也麻烦 当然也可以选择第三方库,但是一般不这么做 在Android design v28 的版本中,官方对TabLayout做了优化,只需要一个属性即可设置tabIndicator...的宽度了 app:tabIndicatorFullWidth="false" 效果: 如果不需要,基本使用看这里: https://blog.csdn.net/yechaoa/article/details.../78259701 解决9.0反射失效的看这里: https://www.jianshu.com/p/cf4ed386efe9
在这篇文章中,我们将定义 JSON API 是什么,并了解如何使用它来构建高效的 API。我们将介绍 JSON API 的一些主要优点,并通过 FitBit 的案例研究了解该规范在实践中的应用情况。...使用 JSON API 的好处 既然我们对 JSON API 是什么有了基本的了解,那么有哪些独特的优势使它脱颖而出?...由于使用 JSON API 的客户端以相同的方式访问数据,因此他们不需要将数据存储在不同的位置。这种设计可能需要转变思想,但如果使用得当,可以带来显着的优化优势。...JSON API 如何在实践中使用:FitBit 案例研究 让我们看看 JSON API 如何在实践中实现以设计高效的 API,使用 FitBit 作为现实生活中的案例研究。...凭借上面列出的优势,以及它的健康采用,JSON API 似乎是 API 风格的有力竞争者。 我们鼓励您自己阅读规范。您如何看待 JSONAPI.org?您使用什么规范来定义您的 API 和数据模型?
;分别设置不同的颜色就行。...最好需要新建一个tablayout的style: #ff00ff 2dp 这个style你要单独的去命名...,我的名字叫张继群就随便的命名了。...在你的style中有tablayout单独的style;名称如下: Base.Widget.Design.TabLayout 这个style很特殊。专门为tablayout准备。 这样就完成了。
继上次Android设置TabLayout及下划线宽度 后发现有个问题没补充 最近在修改界面时,发现之前的TabLayout宽度没撑满,并且设置了TabLayout.MODE_FIXED也没有生效,...TabItem还是没有填满屏幕而是居中显示,原来需要设置 查资料后,具体的参数设置如下便可解决: 宽度一定要设置成 match_parent, 即 android:layout_width="match_parent..." tabGravity设置成fill, 即 app:tabGravity="fill" tabMaxWidth设置成 0dp, 即 app:tabMaxWidth="0dp" 这个是一定要设置的 tabMode...设置成fixed, 即 app:tabMode="fixed" 完成以上四步就可以铺满整个屏幕宽度了 TabLayout android...:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="@dimen/dp_48"
几种时间API java.util.Date和java.util.Calendar:这两个类是Java早期的时间API,已经过时,不推荐使用。...java.time包:Java 8引入了一个新的时间API,该API包括多个类,例如: LocalDate:表示日期,例如2021-10-01。 LocalTime:表示时间,例如14:30:00。...无解的ChronoUnit : 获取时间的天数、分钟、月份、 年份….. java.sql.Date和java.sql.Time:这两个类是Java中用于处理数据库时间的API,通常情况下不需要使用。...我们常用的就是time包下的时间API 以及 Util包下的 Java. time LocalDate:表示日期例如2021-10-01。...对于LocalDate 这是实现类 ,我们可以进行很多操作, 一般我们可以和Period:表示日期之间的时间差 进行联动使用 它的三个参数分别代表 :年 、月、该月第几天 其中封装的Period.between
使用TabLayout,但是 tabMode="scrollable" 时,两个tab之间的间距太开了,实在不美观,看TabLayout源码,原来是设置了最小间距导致的: this.scrollableTabMinWidth...dimen.design_tab_scrollable_min_width); 72dp ui工程师要求是47dp,于是通过反射的方法改变这个值就可以了...: public class MyTabLayout extends TabLayout { // 一屏显示多少个tab private static final int TabViewNumber...).widthPixels; // int tabMinWidth = screenWidth / TabViewNumber; // scrollable模式时,tab的最小宽度...-keepclasseswithmembernames class android.support.design.widget.TabLayout { *; } 参考资料:https://blog.csdn.net
文章前言Docker作为最流行的容器化解决方案其API接口提供了强大的容器管理功能,通过Docker API我们可以实现自动化的容器lifecycle管理、数据管理、网络管理等,大大简化容器的使用难度,...本篇文章我们主要介绍Docker API的基本使用版本划分Docker API分为三个版本:V1:Docker最初的API版本,目前已被废弃V2:Docker现在的稳定版本API,与Docker CLI...APIHTTP RESTful API是Docker API最基本的调用方式,通过HTTP请求和响应来管理和操作Docker引擎,HTTP RESTful API使用标准的HTTP方法和URL路径来表示请求的操作并使用...OAuth2.0认证插件提供的RESTful API来获取访问令牌并使用该访问令牌来访问Docker API的特定资源,我们可以使用以下命令来获取访问令牌,其中CLIENT_ID和CLIENT_SECRET...日志记录可以帮助管理员追踪和分析Docker API的使用情况以及发现和解决安全问题,下面是一个使用日志记录机制的Docker API示例:Step 1:配置Docker引擎的日志记录首先需要配置Docker
文章前言 Docker作为最流行的容器化解决方案其API接口提供了强大的容器管理功能,通过Docker API我们可以实现自动化的容器lifecycle管理、数据管理、网络管理等,大大简化容器的使用难度...,本篇文章我们主要介绍Docker API的基本使用 版本划分 Docker API分为三个版本: V1:Docker最初的API版本,目前已被废弃 V2:Docker现在的稳定版本API,与Docker...认证授权 接下来需要配置Docker API认证和授权机制以便使用OAuth 2.0认证插件验证客户端的身份并授权客户端访问Docker API的特定资源,我们可以使用以下命令来启动Docker引擎并将...OAuth2.0认证插件提供的RESTful API来获取访问令牌并使用该访问令牌来访问Docker API的特定资源,我们可以使用以下命令来获取访问令牌,其中CLIENT_ID和CLIENT_SECRET...,可以记录所有的API请求和响应信息并将其保存到Docker引擎的日志文件中,日志记录可以帮助管理员追踪和分析Docker API的使用情况以及发现和解决安全问题,下面是一个使用日志记录机制的Docker
XML方式: 关联ViewPager: 常用属性: 所有属性: 高级用法: 设置图标 添加监听 默认选中或指定选中 文字样式 下划线宽度等同文字 下划线样式 Github: 效果: 官网是这样介绍的:...(水平方向的选项卡) 依赖: implementation 'com.google.android.material:material:1.2.1' 代码方式: TabLayout tabLayout...= ...; tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText...("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); XML方式: TabLayout...app:tabIndicatorHeight 指示器的高度,去掉指示器的话直接设置0dp app:tabMode="fixed" 显示的模式,fixed表示平分显示,scrollable滑动显示 app