一、修改点击的动画

函数:setUnboundedRipple

这是默认的点击的动画

TabLayout您可能不知道的实用用法-LMLPHP

我们用代码修改一下:

mGlueTabLayout.setUnboundedRipple(true);

这是之后的效果:

TabLayout您可能不知道的实用用法-LMLPHP

二、设置下划线指示器的宽度不要填充完(动态的根据TabView的宽度来设置自身的宽度)

函数:setTabIndicatorFullWidth

这是默认的效果

TabLayout您可能不知道的实用用法-LMLPHP

我们用代码修改一下:

mGlueTabLayout.setTabIndicatorFullWidth(false);

这是之后的效果:

TabLayout您可能不知道的实用用法-LMLPHP

三、设置下划线指示器的样式

函数:setSelectedTabIndicator

这是默认的效果

TabLayout您可能不知道的实用用法-LMLPHP

我们用代码改变:

GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setCornerRadius(dp2px(2));
mGlueTabLayout.setSelectedTabIndicator(gradientDrawable);

我改变了其的直角,变为了圆角,看效果吧:

TabLayout您可能不知道的实用用法-LMLPHP

您也可以在res/drawable文件夹下写个xml文件传入setSelectedTabIndicator(@DrawableRes int tabSelectedIndicatorResourceId),效果是一样的。

这个您也许也需要

TabLayout您可能不知道的实用用法-LMLPHP

这个动画很好看,我也在一些应用上看到它的影子,比如微博。

所以,我写了GlueTabLayout简单扩展了TabLayout,添加了这个动画,GlueTabLayout本质就是TabLayout,一点未变,您怎么用TabLayout,就可以怎么使用GlueTabLayout,是不是很友好,哈哈。

我还添加了一个TabLayout没有提供的方法,我添加了精确设置下划线指示器宽度的方法。

我把它开源了,用以方便有需要的人,更详细的描述移步 GitHub

以上 :)

05-11 14:06