精华内容
下载资源
问答
  • 方法1mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);...

    方法1

    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

    @Override

    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

    super.onScrolled(recyclerView, dx, dy);

    Log.i(TAG, "--------------------------------------");

    if(mRecyclerView.canScrollVertically(1)){

    Log.i(TAG, "direction 1: true");

    }else {

    Log.i(TAG, "direction 1: false");//滑动到底部

    }

    if(mRecyclerView.canScrollVertically(-1)){

    Log.i(TAG, "direction -1: true");

    }else {

    Log.i(TAG, "direction -1: false");//滑动到顶部

    }

    }

    });

    方法2

    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

    @Override

    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

    super.onScrolled(recyclerView, dx, dy);

    Log.i(TAG, "--------------------------------------");

    LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();

    int firstCompletelyVisibleItemPosition = layoutManager.findFirstCompletelyVisibleItemPosition();

    Log.i(TAG, "firstCompletelyVisibleItemPosition: "+firstCompletelyVisibleItemPosition);

    if(firstCompletelyVisibleItemPosition==0)

    Log.i(TAG, "滑动到顶部");

    int lastCompletelyVisibleItemPosition = layoutManager.findLastCompletelyVisibleItemPosition();

    Log.i(TAG, "lastCompletelyVisibleItemPosition: "+lastCompletelyVisibleItemPosition);

    if(lastCompletelyVisibleItemPosition==layoutManager.getItemCount()-1)

    Log.i(TAG, "滑动到底部");

    }

    });

    展开全文
  • 如何判断 ListView 滑动到顶部和底部?网上一搜,最多的答案都是这样的: mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, ...
    如何判断 ListView 滑动到顶部和底部?网上一搜,最多的答案都是这样的:
     mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }
    
    
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            if (firstVisibleItem == 0) {
                Log.d("ListView", "##### 滚动到顶部 #####");
            } else if ((firstVisibleItem + visibleItemCount) == totalItemCount) {
                Log.d("ListView", "##### 滚动到底部 ######");
            }
        }
    });
    

    这一段代码并不能够精确地判断 ListView 是否到达最顶部或者最底部。因为只要ListView中第一个item出现在屏幕上端,即使只出现一部分,firstVisibleItem 的值也依然为0, onScroll()回调就会发生; 同样ListView 的最后一个 item 即使只显示一部分,((firstVisibleItem + visibleItemCount) == totalItemCount) 的值也是等于totalItemCount。

    那么倒底如何精确判断 ListView 是否滚动到顶部或者底部?

    一、首先想到的是 ListView.onScrollChanged()

    这个函数是protected,直接引用不到,但是可以继承ListView类,然后重写这个函数:

        @Override
        protected void onScrollChanged(int l, int t, int oldl, int oldt) {
            super.onScrollChanged(l, t, oldl, oldt);
            
            Log.d("ListView", String.format("onScrollChanged: l = %d, t = %d, oldl = %d, oldt = %d, ScrollY = %d", l, t, oldl, oldt, this.getScrollY()));
            if (t == 0) {
                Log.d("ListView", "onScrollChanged <----滚动到顶部----->");
            }
        }
    经过测试发现:ListView的 onScrollChanged() 以及 getScrollX() 和 getScrollY() 总是返回0,根本不起作用。但是对于Android ScrollView 这三个函数都是有效的,为什么ListView就不起作用呢?尼玛,绝对没有想到Android 这么坑爹!

    可以参看 http://stackoverflow.com/questions/24856063/listview-onscrollchanged-always-returns-0

    二、只能继续改进 ListView.setOnScrollListener() 

    1. 改进是否滚动到顶部:增加判断第一个 item 距离 ListView 顶部的距离是否为 0

    if (firstVisibleItem == 0) {
        View firstVisibleItemView = mListView.getChildAt(0);
        if (firstVisibleItemView != null && firstVisibleItemView.getTop() == 0) {
            Log.d("ListView", "##### 滚动到顶部 ######");
        }
    }
    2. 改进是否滚动到底部:增加判断当前屏幕中可见的最后一个 item 的底端距离 ListView 的顶端是否为 ListView 的高度:

    if ((firstVisibleItem + visibleItemCount) == totalItemCount) {
        View lastVisibleItemView = mListView.getChildAt(mListView.getChildCount() - 1);
        if (lastVisibleItemView != null && lastVisibleItemView.getBottom() == mListView.getHeight()) {
            Log.d("ListView", "##### 滚动到底部 ######");       
        }
    }
    全部完整代码如下:

            mListView.setOnScrollListener(new OnScrollListener() {
                @Override
                public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                    if (firstVisibleItem == 0) {
                        View firstVisibleItemView = mListView.getChildAt(0);
                        if (firstVisibleItemView != null && firstVisibleItemView.getTop() == 0) {
                            Log.d("ListView", "##### 滚动到顶部 #####");
                        }
                    } else if ((firstVisibleItem + visibleItemCount) == totalItemCount) {
                        View lastVisibleItemView = mListView.getChildAt(mListView.getChildCount() - 1);
                        if (lastVisibleItemView != null && lastVisibleItemView.getBottom() == mListView.getHeight()) {
                            Log.d("ListView", "##### 滚动到底部 ######");       
                        }
                    }
                }
    
                @Override
                public void onScrollStateChanged(AbsListView view, int scrollState) {
                    //do nothing
                }
                
            });
    经过测试发现:上述代码能够正确判断 ListView 是否滚动到顶部或者底部

    展开全文
  • 今天碰到需求,做帖子阅读时全屏阅读状态下,由于使用的webview展现,需要判断webview滑动到最...如何捕获呢: 首先给webview添加手势动作: 具体添加手势我不写了,不知道的搜下百度, 在手势的 public boolean on

        今天碰到需求,做帖子阅读时全屏阅读状态下,由于使用的webview展现,需要判断webview滑动到最底部是变为非全屏状态,以及全屏状态滑动到顶部时再次变为非全屏。

     有点绕嘴,简单说就是判断当webview的滚动条滑动到底部和顶部时进行一些监听捕获。

    如何捕获呢:

    首先给webview添加手势动作:

    具体添加手势我不写了,不知道的搜下百度,

    在手势的 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
       float velocityY) {}代码中进行判断:

    代码:

    if((int)(mWebView.getContentHeight()*mWebView.getScale()) == (mWebView.getHeight() + mWebView.getScrollY())){
    			//滑动到底部,你要做的事·····		}
    		if(mWebView.getScrollY() == 0){
    			//滑动到顶部,你要做的事····		}


    首先是滑动到底部记得需要(int)(mWebview.getContentHeight*mWebView.getScale())强转正int型去掉后面的小数点

    mWebview.getContentHeight:得到mWebview的内容高度,由于mWebview有缩放因此需要乘以他的缩放值mWebView.getScale()

     

    mWebView.getHeight():当前mWebView显示的高度

    mWebView.getScrollY():mWebView竖直方向上滚动的高度,若为0说明滚动条在顶部了

     

     

     

    展开全文
  • 如何判断 ListView 滑动到顶部和底部?网上一搜,最多的答案都是这样的:   [java] view plain copy  mListView.setOnScrollListener(new AbsListView.OnScrollListener() {   @Override   pub...

     

    Android 如何 ListView 判断滚动到最顶部或者底部

    如何判断 ListView 滑动到顶部和底部?网上一搜,最多的答案都是这样的:

     

    [java] view plain copy

    1.  mListView.setOnScrollListener(new AbsListView.OnScrollListener() {  
    2.     @Override  
    3.     public void onScrollStateChanged(AbsListView view, int scrollState) {  
    4.     }  
    5.   
    6.   
    7.     @Override  
    8.     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {  
    9.         if (firstVisibleItem == 0) {  
    10.             Log.d("ListView""##### 滚动到顶部 #####");  
    11.         } else if ((firstVisibleItem + visibleItemCount) == totalItemCount) {  
    12.             Log.d("ListView""##### 滚动到底部 ######");  
    13.         }  
    14.     }  
    15. });  

    这一段代码并不能够精确地判断 ListView 是否到达最顶部或者最底部。因为只要ListView中第一个item出现在屏幕上端,即使只出现一部分,firstVisibleItem 的值也依然为0, onScroll()回调就会发生; 同样ListView 的最后一个 item 即使只显示一部分,((firstVisibleItem + visibleItemCount) == totalItemCount) 的值也是等于totalItemCount。

     

     

    Android实现ListView首行距离屏幕边缘距离

     

     

     

     

     

    Android上ListView默认行都是置顶的,在实际情况下可能需要设置距离顶部的距离,今天设置一下布局

     

    [html] view plain copy

    1. <ListView  
    2.     android:id="@+id/agenda_view"  
    3.     android:paddingLeft="8dp"  
    4.     android:paddingRight="8dp"  
    5.     android:layout_width="match_parent"  
    6.     android:layout_height="wrap_content"  
    7.     android:paddingTop="15dp"  
    8.     android:dividerHeight="6dp">  
    9. </ListView>  

     

     

    的确实现了listview距离顶部有一段距离,但是出现了一个问题,那就是那段距离不会随着listview的滑动而滑动上去,后来搜索了一下只需要设置clipToPadding属性即可

     

    [html] view plain copy

    1. <ListView  
    2.     android:clipToPadding="false"  
    3.     android:id="@+id/agenda_view"  
    4.     android:paddingLeft="8dp"  
    5.     android:paddingRight="8dp"  
    6.     android:layout_width="match_parent"  
    7.     android:layout_height="wrap_content"  
    8.     android:paddingTop="15dp"  
    9.     android:dividerHeight="6dp">  
    10. </ListView>  


    clipToPadding用来定义ViewGroup是否允许在padding中绘制。默认情况下,cliptopadding被设置为ture, 也就是把padding中的值都进行裁切了

    Adapter中重写getItem()方法获取item对象

    @Override
        public Object getItem(int position) {
            return this.getView(position, null, gridView);
        }

     

     

    展开全文
  • android 的ListView中,如何判断其内容已滚动到最顶部或者最底部?
  • <!DOCTYPE> <head> <... charset=utf-8" />...var $navxf = $('#Jnav'), navTop = $navxf.offset...现在想添加个判断:滚动到页面底部导航条在顶部出现浮动。也就是和这个网站导航条一样www.lcwlltd.com
  • 如何判断页面滑到了屏幕最底部 项目中经常会遇到列表页,为了保证用户体验,我们都会用到上拉加载的技术,保持用户体验,如何判断页面滑到了屏幕最底部是较为关键的一步:具体实现: created: created(){ ...
  • listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override
  • 如果布局只有Recyclerview的话就判断 判断是否滑动到底部, recyclerView.canScrollVertically(1);返回false表示不能往上滑动,即代表到底部了; 判断是否滑动到顶部, ...如何你嵌套的NestedScrollView或者是...
  • getListView().setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override
  •   介绍一下如何在srcoll滚动到指定位置后执行指定函数和如何实现回到顶部功能。   目录: 判断scroll滚动到底部以及实现回到顶部 js实现 jQuery实现 回到顶部 js实现 window.onscroll = ...
  • Android 的ListView中,如何判断其内容已滚动到最顶部或者最底部? 根据这个方法检测: getListView().setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListV
  • 原问题描述:android 的ListView中,如何判断其内容已滚动到最顶部或者最底部? 解决方案: 根据这个方法检测: getListView().setOnScrollListener(new OnScrollListener() { @Override public void ...
  • 上面是一个样式,添加了事件和判断,但是要注意下面方法的scrollTop 与scroll-view中的属性相结合 /** * 回到顶部方法很简单 */ onTapMove: function () { this.setData({ scrollTop: 0 }) } 而判断if是否为...
  • 2.3以上才有的,程序运行的时候可以判断当前系统是哪个版本,2.3以上可以设置setOverScrollMode(View.OVER_SCROLL_NEVER)方法不显示边框,2.2一下则不运行即可。 setOverScrollMode(View.OVER_SCROLL_NEVER);
  • 如图   ...2.2系统默认没有那种效果,2.3以上才有的,程序运行的时候可以判断当前系统是哪个版本,2.3以上可以设置setOverScrollMode(View.OVER_SCROLL_NEVER)方法不显示边框,2.2一下则不运行即可
  • 如何判断滚动是否滚动到了底部? 首先要了解的知识 scrollHeight,clientHeight,scrollTop scrollHeight 只读属性,高度包括所有内容,包含内边距,但不把水平滚动条、边框和外边距算在内。 clientHeight 也是只读...
  • 实现原理 想要实现这个功能,就要知道具体的实现原理。下面直入主题。 我们通过浏览器在浏览一个网页...其判断规则就是,当dom元素的中心坐标的X及Y坐标均小于显示窗口的顶部,且大于显示窗口的底部坐标时,那么就可
  • 笔者在这里介绍如何使用Jquery判断用户是否已经浏览到网页的底部了。 在了解下面的知识点之前,笔者这里先介绍几个概念。 $(window).height(); //用于获取浏览器显示区域的高度 $(window).width(); //用于获取浏览器...
  • 自:我的真实的已经实现的,这个可以当到达顶部或底部时不会反弹,PERFERCT!!! - (void)scrollViewDidScroll:(UIScrollView *)scrollView {  int currentPostion = scrollView.contentOffset.y;...
  • 大势是市场中所有个股的趋势综合而成的,而个股又是千千万万个交易者的交易态度所决定的。   在现实生活中我们就是想猜一个人的心思都...与研究中,我发现判断一个中期顶部的出现一般可以结合一段时期大盘的累...
  • 还是在右侧或底部加上个回到顶部按钮比较好,很多网站也会把客服及其他入口放在右侧,这样就会成为比较长的一列了,但若是用户正在第一屏,或许正是幻灯片的位置,右侧飘着个东西挡住了大图,也不美观,那么如何让...
  • 六首失传股诗教你如何抄底和逃 2015-07-27 14:20 | 股民学校  《抄底》   放量下跌要减仓,  缩量新低是象。  增量回升是关键,  回头确认要进场。    要点:  底部是一个调整周期的末端...

空空如也

空空如也

1 2 3 4 5 6
收藏数 102
精华内容 40
关键字:

如何判断顶底