安卓:隐藏的RelativeLayout时的ListView向下滚动 [英] Android : Hide relativelayout when scroll down on listview

查看:133
本文介绍了安卓:隐藏的RelativeLayout时的ListView向下滚动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试当用户开始在ListView向下滚动到添加RelativeLayout的。
我想再次显示的RelativeLayout当用户滚动到顶部并显示列表视图的第一个项目时。

我的code的作品,但有一点爬,当用户试图滚动。
我认为这个问题是位于listAtTop功能,但我不知道在哪里。

  list.setOnDetectScrollListener(新OnDetectScrollListener(){
                @覆盖
                公共无效onUpScrolling(){
                    /* 做一点事 */
                    Log.d(信息,UPPPPPPPPPPP);
                    如果(listIsAtTop()){
                        RelativeLayout的relative1 =(RelativeLayout的)findViewById(R.id.relative1);
                        relative1.setVisibility(View.VISIBLE);
                    }
                }                @覆盖
                公共无效onDownScrolling(){
                    /* 做一点事 */
                    Log.d(信息,DOWNNNNNNNN);
                    如果(!listIsAtTop()){
                        RelativeLayout的relative1 =(RelativeLayout的)findViewById(R.id.relative1);
                        relative1.setVisibility(View.GONE);
                    }                }
            });
私人布尔listIsAtTop(){
        如果(list.getChildCount()== 0){
            返回true;
        }
        返回list.getFirstVisiblePosition()== 0安培;&安培; (list.getChildCount()== 0 || list.getChildAt(0).getTop()== 0);
    }


解决方案

试试这个方法。

  list.setOnScrollListener(新OnScrollListener(){        @覆盖
        公共无效onScroll(AbsListView观点,诠释firstVisibleItem,
                INT visibleItemCount,诠释totalItemCount){
            }
        INT mPosition = 0;
        INT mOffset = 0;        @覆盖
        公共无效onScrollStateChanged(AbsListView观点,诠释scrollState){
            // TODO自动生成方法存根
             INT位置= list.getFirstVisiblePosition();
               视图V = list.getChildAt(0);
                偏移为int =(V == NULL)? 0:v.getTop();                如果(mPosition<仓位||(mPosition ==位置和放大器;&安培; mOffset<偏移)){
                     //滚动起来
                     //search_layout.setVisibility(View.GONE);                }其他{
                     //向下滚动
                     //search_layout.setVisibility(View.VISIBLE);                }
        }
    });

在当您滚动下跌隐藏布局,当你卷动起来,达到上面这个code 然后可见布局

I try to add a relativelayout when the user begin to scroll down in a listview. I would like to show the relativelayout again when the user scroll to top and when first item of the listview is displayed.

My code works but there is a little "climb" when the user try to scroll. I think that the problem is located on listAtTop function but i don't know where.

list.setOnDetectScrollListener(new OnDetectScrollListener() {
                @Override
                public void onUpScrolling() {
                    /* do something */
                    Log.d("INFO", "UPPPPPPPPPPP");
                    if (listIsAtTop()) {
                        RelativeLayout relative1 = (RelativeLayout) findViewById(R.id.relative1);
                        relative1.setVisibility(View.VISIBLE);
                    }
                }

                @Override
                public void onDownScrolling() {
                    /* do something */
                    Log.d("INFO", "DOWNNNNNNNN");
                    if (!listIsAtTop()) {
                        RelativeLayout relative1 = (RelativeLayout) findViewById(R.id.relative1);
                        relative1.setVisibility(View.GONE);
                    }

                }
            });


private boolean listIsAtTop()   {   
        if (list.getChildCount() == 0) {
            return true;
        }
        return list.getFirstVisiblePosition() == 0 && (list.getChildCount() == 0 || list.getChildAt(0).getTop() == 0);
    }

解决方案

Try this way

 list.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            }
        int mPosition=0;
        int mOffset=0;

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub
             int position = list.getFirstVisiblePosition();
               View v = list.getChildAt(0);
                int offset = (v == null) ? 0 : v.getTop();

                if (mPosition < position || (mPosition == position && mOffset < offset)){
                     // Scrolled up 
                     //search_layout.setVisibility(View.GONE);

                } else {
                     // Scrolled down
                     //search_layout.setVisibility(View.VISIBLE);

                }
        }
    }); 

In this code when you scroll down hide layout and when you scroll up and reached to top then Visible layout

这篇关于安卓:隐藏的RelativeLayout时的ListView向下滚动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆