参考文章五种方式实现Android吸顶效果

我的效果
在这里插入图片描述
吸顶关键点:

  1. 根据滑动距离动态改变tabLayout的父容器
  2. 根据滑动距离动态改变悬浮tab的背景色
  3. 锚点切换关键点参考另一篇文章android锚点优化

关键点代码:

if (y >= headerH) {
    //滑动的距离大于头部布局的高度,切换tabLayout的父布局为scrollview外部的tab容器
    if (frame_dynamic_view.getParent() != ll_out_bar) {
        ll_inside_bar.removeView(frame_dynamic_view);
        ll_out_bar.addView(frame_dynamic_view);
        ll_out_bar.setBackgroundColor(getResources().getColor(R.color.white));
    }
} else {
    //滑动的距离小于头部布局的高度,切换tabLayout的父布局为scrollview内部的tab容器
    if (frame_dynamic_view.getParent() != ll_inside_bar) {
        ll_out_bar.removeView(frame_dynamic_view);
        ll_inside_bar.addView(frame_dynamic_view);
        ll_out_bar.setBackgroundColor(getResources().getColor(android.R.color.transparent));
    }
}
if (isScroll) {
    //关键点2:由scrollView引起的滑动后移动tabLayout高亮显示指定的tab
    if (y +tabH < ll_second.getTop()) {
        setScrollPos(0);
    } else if (y +tabH >= ll_second.getTop() && y + tabH< ll_third.getTop()) {
        setScrollPos(1);
    } else if (y + tabH>= ll_third.getTop()) {
        setScrollPos(2);
    }
}

完整代码

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐