日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

RecyclerView悬浮标题

發(fā)布時間:2025/4/16 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RecyclerView悬浮标题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

效果圖:

??????

1.頂部會懸浮章的部分

2.第二章上滑會推擠第一章

3.第二章下拉會帶出第一章

4.并不是所有時候都有懸浮部分(為什么這條標(biāo)紅,因為市面上幾乎所有的懸浮都是必須存在且在頂部,害的我必須自己寫)

如果你要的只是和IOS通訊錄相似的效果,即總有一行懸浮在頂部,百度stickyItemDecoration即可,網(wǎng)上一抓一大把,這里隨便參考一個http://blog.csdn.net/briblue/article/details/70211942?,原理很簡單,就是給recyclerview分組,每個item都帶一個header頭布局,同一組第一個才顯示,其他位置不顯示,自帶動效

可惜啊,我這里屏幕頂部還有其他的布局,導(dǎo)致一開始不能懸浮

根據(jù)頂部可見position來顯示和隱藏懸浮行,大家都會,我主要講如果做第二章推擠第一章的動效:

結(jié)構(gòu)圖分析如下:

代碼如下

private void setTopView() {recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView t, int dx, int dy) {//標(biāo)題欄底部的Y坐標(biāo)int[] titleLocation = new int[2];rootLayout.getLocationOnScreen(titleLocation);int titleY = titleLocation[1] + rootLayout.getMeasuredHeight();//最頂部可見的位置int position = layoutManager.findFirstVisibleItemPosition();//第二個布局的頂部Y坐標(biāo)BaseViewHolder viewHolder = (BaseViewHolder) recyclerView.findViewHolderForAdapterPosition(position + 1);View layout = viewHolder.getConvertView();int[] location = new int[2];layout.getLocationOnScreen(location);int y = location[1];//懸浮章的底部坐標(biāo)int topBottom = titleY + topChapterLayout.getMeasuredHeight();RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, topChapterLayout.getMeasuredHeight());if (list.get(position) instanceof CourseDetail) {CourseDetail courseDetail = (CourseDetail) list.get(position);CourseDetail courseDetailAfter = (CourseDetail) list.get(position + 1);if (!TextUtils.isEmpty(courseDetail.getChapterTitle())) {params.topMargin = 0;topChapterLayout.setLayoutParams(params);topChapterLayout.setVisibility(View.VISIBLE);chapter.setText(courseDetail.getChapterTitle());switch (courseDetail.getChapterStatus()) {case 0:noComplete.setVisibility(View.VISIBLE);complete.setVisibility(View.GONE);break;case 1:complete.setVisibility(View.VISIBLE);noComplete.setVisibility(View.GONE);break;}if (null == courseDetailAfter) {return;}if (courseDetail.getChapterId() != courseDetailAfter.getChapterId()) {if (y <= topBottom) {int scrollY = y - topBottom;params.topMargin = scrollY;topChapterLayout.setLayoutParams(params);}}}} else {topChapterLayout.setVisibility(View.INVISIBLE);}}}); }

?主要原理就是判斷y和topBottom的大小,如果第二章已經(jīng)開始遮蓋懸浮的位置了,那懸浮位置就上移,形成推擠的動效

總結(jié)

以上是生活随笔為你收集整理的RecyclerView悬浮标题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。