recyclerView一鍵回到頂部

1.滾動監(jiān)聽:設置回到頂部按鈕的顯示隱藏

 binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                //獲取RecyclerView當前頂部顯示的第一個條目對應的索引
                int position = manager.findFirstVisibleItemPosition();
                //根據(jù)索引來獲取對應的itemView
                View firstVisiableChildView = manager.findViewByPosition(position);
                //獲取當前顯示條目的高度
                int itemHeight = firstVisiableChildView.getHeight();
                //獲取當前Recyclerview 偏移量
                int flag = (position) * itemHeight - firstVisiableChildView.getTop();
                //注意事項:recyclerView不要設置padding
                if(flag==0)
                    binding.ivTop.setVisibility(View.GONE);
                else
                    binding.ivTop.setVisibility(View.VISIBLE);
            }
        });

2.設置一鍵回到頂部按鈕的點擊事件

   @Override
    public void goTop() {
        binding.recyclerView.post(new Runnable() {
            @Override
            public void run() {
                binding.recyclerView.scrollToPosition(0);
            }
        });
    }

3.item的布局文件:recyclerView的item布局文件最外層一定不要設置margin

  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.CardView 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            app:cardElevation="0dp"
            app:contentPaddingBottom="2dp"
            app:contentPaddingTop="2dp">
             <ImageView
                    imgUrl="@{product.img}"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:layout_margin="5dp"
                    android:adjustViewBounds="true"                   
                    android:scaleType="centerCrop"
                    android:transitionName="transitionImg" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:padding="2dp"
                    android:text="@{product.name}"
                    android:textSize="14sp" />
        </android.support.v7.widget.CardView>
    </FrameLayout>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,025評論 2 59
  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 從Android 5.0...
    Rtia閱讀 308,464評論 27 440
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,162評論 1 92
  • 內(nèi)容 抽屜菜單 ListView WebView SwitchButton 按鈕 點贊按鈕 進度條 TabLayo...
    小狼W閱讀 1,671評論 0 10
  • 冷了幾日的廣州開始回暖,像是陽光燦爛的春天,走在街頭,還微微滲汗。不過,看完騰訊一個公眾號關(guān)于北京大興火災的后續(xù)報...
    林慕言閱讀 306評論 0 0

友情鏈接更多精彩內(nèi)容