首页 新闻 搜索 专区 学院

如何控制ListView的第一条记录固定不动?

0
悬赏园豆:50 [已解决问题] 解决于 2012-05-08 10:11

我要达到的效果是向下滚动listView时,第一条记录固定不动,上向滚动的时候第一条记录可以隐藏,这个不知道怎么做?那位高手指点一些,先谢谢了!!

JoanneZhang的主页 JoanneZhang | 初学一级 | 园豆:158
提问于:2012-05-04 15:10
< >
分享
最佳答案
2

还是自己解决的,需要重新布局当前的layout,红色标记部分是关键,拿来与大家分享一下!

@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX,
boolean clampedY) {
//Log.e(TAG, "onOverScrolled(),scrollX=" +scrollX + ",scrollY="+scrollY+
//",clampedX="+clampedX+",clampedY:"+clampedY+",mAddHeader="+mAddHeader);

//判断向下滚动,重新布局

if(scrollY < 0 ){
mAddHeader = true;
if(mSearchView != null){
mSearchView.layout(0, scrollY, mSearchViewWidth, mSearchViewHeight + scrollY);
this.setHeaderDividersEnabled(false);
}

//向上滚动时,重新布局
}else if(scrollY >= 0 && mAddHeader ){
mAddHeader = false;
requestLayout();
}
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
}

@Override
public void addHeaderView(View v) {
super.addHeaderView(v);
mSearchView = (ViewGroup) v;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mSearchView != null) {
mSearchViewWidth = mSearchView.getMeasuredWidth();
mSearchViewHeight = mSearchView.getMeasuredHeight();
}
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (mSearchView != null) {
mSearchView.layout(0, 0, mSearchViewWidth, mSearchViewHeight);
}
}

JoanneZhang | 初学一级 |园豆:158 | 2012-05-08 10:05

楼主好人  给个完整的代码吧!

忧郁的小丑 | 园豆:199 (初学一级) | 2013-08-26 22:22
其他回答(2)
0

做一控件.

滚动的时候,用另外一个容器放第一个,占山个第一个的位置,其他的照滚.

收获园豆:50
go on coding | 园豆:343 (菜鸟二级) | 2012-05-05 19:23

还是不知道怎么做,能不能详细讲一下,使用什么控件或者容器,滚动部分要怎么控制?谢谢!

支持(0) 反对(0) JoanneZhang | 园豆:158 (初学一级) | 2012-05-07 09:35
0

方便给个demo?

bxxasn | 园豆:202 (菜鸟二级) | 2014-11-03 14:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册