android tablayout放图片,Android TabLayout的Indicator如何设置为图片

前言TabLayout 我相信大家都有使用过,但是官方并没有对Indicator可以设置为图片的支持,只能是简单的水平线,也就是滑动杆那个玩意,那么如何做到可以用图片来做指示器呢?作为一个喜欢探索新颖解决方案的我,现在给大家带来了大家都很期待的问题的解决方案,下面我来讲讲我的思路和解决方案先上效果这是我将要做到的事情,实现TabLayout的Indicator可自定义image效果图分析源码既然T...
摘要由CSDN通过智能技术生成

0eb4e09b3944?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

前言

TabLayout 我相信大家都有使用过,但是官方并没有对Indicator可以设置为图片的支持,只能是简单的水平线,也就是滑动杆那个玩意,那么如何做到可以用图片来做指示器呢?作为一个喜欢探索新颖解决方案的我,现在给大家带来了大家都很期待的问题的解决方案,下面我来讲讲我的思路和解决方案

先上效果

这是我将要做到的事情,实现TabLayout的Indicator可自定义image

0eb4e09b3944?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

效果图

分析源码

既然TabLayout 能够和ViewPager手势联动那就说明Tablayout和ViewPager有关联,先来看一下他们是如何关联的

tab_layout.setupWithViewPager(viewpager)

通过这个方法Tablayout和ViewPager相遇了,继续跟进这个方法执行最终会执行到这里

private void setupWithViewPager(@Nullable final ViewPager viewPager, boolean autoRefresh,

boolean implicitSetup) {

...

if (viewPager != null) {

//保存一个成员变量引用

mViewPager = viewPager;

// Add our custom OnPageChangeListener to the ViewPager

if (mPageChangeListener == null) {

mPageChangeListener = new TabLayoutOnPageChangeListener(this);

}

mPageChangeListener.reset();

//关注点1

viewPager.addOnPageChangeListener(mPageChangeListener);

//关注点2

// Now we'll add a tab selected listener to set ViewPager's current item

//注释很明显翻译过来就是添加一个选项选择监听器来设置ViewPager的当前项

mCurrentVpSelectedListener = new ViewPagerOnTabSelectedListener(viewPager);

addOnTabSelectedListener(mCurrentVpSelectedListener);

}

...

}

关注点1添加监听ViewPager的滑动事件,关注点2添加Tablayout选择事件来设置ViewPager的当前项,关注点2注释已经解释得很清楚,重点分析关注点1ViewPager滑动事件,我们lou一眼

public static class TabLayoutOnPageChangeListener implements ViewPager.OnPageChangeListener {

//Viewpager滑动偏移量回调

@Overri

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Android TabLayout 的指示器颜色设置为渐变色,可以执行以下步骤: 1. 定义渐变色 在 drawable 目录下创建一个 gradient.xml 文件,定义渐变色。例如: ``` <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="@color/colorStart" android:endColor="@color/colorEnd" android:angle="0" /> </shape> ``` 其中,@color/colorStart 和 @color/colorEnd 分别指定渐变色的起始和结束颜色,android:angle 表示渐变的角度。 2. 设置 TabLayout 的指示器颜色 通过 TabLayout.setSelectedTabIndicatorColor() 方法设置 TabLayout 的指示器颜色。这里将渐变色作为指示器的颜色: ``` TabLayout tabLayout = findViewById(R.id.tabLayout); tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.transparent)); GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setColor(ContextCompat.getColor(this, R.color.transparent)); gradientDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT); gradientDrawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT); gradientDrawable.setColors(new int[]{ ContextCompat.getColor(this, R.color.colorStart), ContextCompat.getColor(this, R.color.colorEnd) }); tabLayout.setSelectedTabIndicator(gradientDrawable); ``` 其中,tabLayout.setSelectedTabIndicatorColor() 方法设置指示器的颜色为透明,防止出现默认的颜色叠加在渐变色上的情况。然后创建一个 GradientDrawable 对象,设置渐变色的起始和结束颜色,以及渐变的方向。最后调用 tabLayout.setSelectedTabIndicator() 方法将渐变色作为指示器的背景。 3. 设置 TabLayout 的指示器高度 通过 TabLayout.setSelectedTabIndicatorHeight() 方法设置 TabLayout 的指示器高度。例如: ``` tabLayout.setSelectedTabIndicatorHeight(getResources().getDimensionPixelSize(R.dimen.indicator_height)); ``` 其中,R.dimen.indicator_height 是在 dimens.xml 文件中定义的指示器高度的值。 这样,就可以将 Android TabLayout 的指示器颜色设置为渐变色,并且可以设置指示器的高度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值