这两天手头上的项目需要给Tablayout指示器设置一个固定的宽度,但谷歌并没有提供api,网上搜索的各种方式试了之后也没什么效果,而且调用比较麻烦,于是自己翻了源码,发现只要在tablayout中修改指示器左右的值就可以达到目的。源码如下:
public void draw(Canvas canvas) {
....
if (this.indicatorLeft >= 0 && this.indicatorRight > this.indicatorLeft) {
Drawable selectedIndicator = DrawableCompat.wrap((Drawable)(TabLayout.this.tabSelectedIndicator != null ? TabLayout.this.tabSelectedIndicator : this.defaultSelectionIndicator));
selectedIndicator.setBounds(this.indicatorLeft, indicatorTop, this.indicatorRight, indicatorBottom);
if (this.selectedIndicatorPaint != null) {
if (VERSION.SDK_INT == 21) {
selectedIndicator.setColorFilter(this.selectedIndicatorPaint.getColor(), android.graphics.PorterDuff.Mode.SRC_IN);
} else {
DrawableCompat.setTint(selectedIndicator, this.select

本文介绍了一种自定义Android TabLayout指示器宽度的方法,通过反射修改SlidingTabIndicator的左右边界值,实现了固定宽度的指示器效果。文中提供了完整的代码实现,包括如何在TabLayout构造函数中初始化SlidingTabIndicator,以及如何使用OnPreDrawListener进行数值调整。

1418

被折叠的 条评论
为什么被折叠?



