组件介绍
这个组件用于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 |
网友评论