美文网首页
ScrollView顶部停靠

ScrollView顶部停靠

作者: MissmoBaby | 来源:发表于2017-07-06 10:43 被阅读0次

    组件介绍

    这个组件用于android项目中,实现子View在滑动到顶部后,停在最顶部,不再滑动。

    动态图

    pinnedheader.gif

    使用场景

    适用于滑动布局中,希望菜单栏或者导航栏不滑出屏幕。

    如何使用

    第一步:初始化控件

    layout = (PinnedHeaderLayout) findViewById(R.id.layout);//最外层布局,包裹着PinnedHeaderScrollView
            headView1 = (LinearLayout) findViewById(R.id.headView);//指定的headerView
            container1 = (LinearLayout) findViewById(R.id.container);//headerView的父控件
            topView = (RelativeLayout) findViewById(R.id.topView);
    

    第二步:加载数据源

    PinnedHeaderViewInfo,用来存放headerView的各种信息
    setParent:headerView在原布局中父控件
    setHeight:headerView的高度
    setView:指定headerView
    setTopDistance:headerView距离顶部的距离
    PinnedHeaderViewInfo info = new PinnedHeaderViewInfo();
    info.setParent(container1);
    info.setHeight(headView1.getMeasuredHeight());
    info.setView(headView1);
    info.setTopDistance(topView.getBottom());
    ArrayList<PinnedHeaderViewInfo> mData = new ArrayList();
    mData.add(info);
    layout.setData(mData);//将数据传入PinnedHeaderLayout
    

    实现原理

    PinnedHeaderLayout继承至FrameLayout,会自动加载一个LinerLayout子View,这个LinerLayout用来装载headerView,通过监听PinnedHeaderScrollView的滑动,将headerView在该LinerLayout和headerView的原父控件之间 add和remove。

    TODO

    优化设置headerView的方法,将高度和距离计算交给PinnedHeaderScrollView

    版本控制

    版本号 更新内容 修改人 修改时间
    1.0 初次发布 lucky_tiger 2017/7/6

    项目地址

    所在文件夹 demo位置
    widget.FixScrollView com.qr.demo.widget.fixscrollview.FixScrollViewActivity

    相关文章

      网友评论

          本文标题:ScrollView顶部停靠

          本文链接:https://www.haomeiwen.com/subject/qkxhhxtx.html