activity布局   ll_top代表要悬停的部分  这里面我放了 图片和文本

 1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:paddingBottom="@dimen/activity_vertical_margin"
8 android:paddingLeft="@dimen/activity_horizontal_margin"
9 android:paddingRight="@dimen/activity_horizontal_margin"
10 android:paddingTop="@dimen/activity_vertical_margin"
11 tools:context="com.demon.testservice.ui.RelistActivity">
12
13 <FrameLayout
14 android:layout_width="match_parent"
15 android:layout_height="match_parent">
16
17 <android.support.v7.widget.RecyclerView
18 android:id="@+id/recyclerView"
19 android:layout_width="match_parent"
20 android:layout_height="match_parent">
21
22 </android.support.v7.widget.RecyclerView>
23
24
25 <LinearLayout
26 android:id="@+id/ll_top"
27 android:layout_width="match_parent"
28 android:layout_height="wrap_content"
29 android:orientation="vertical">
30
31
32 <LinearLayout
33 android:layout_width="match_parent"
34 android:layout_height="wrap_content"
35 android:background="@color/white"
36 android:gravity="center_vertical"
37 android:orientation="horizontal">
38
39 <ImageView
40 android:layout_width="30dp"
41 android:layout_height="30dp"
42 android:src="@drawable/ic_launcher"/>
43
44 <TextView
45 android:id="@+id/tv_top"
46 android:layout_width="wrap_content"
47 android:layout_height="wrap_content"
48 android:text="name"/>
49
50 </LinearLayout>
51
52
53 <View
54 android:id="@+id/top_divider"
55 android:layout_width="match_parent"
56 android:layout_height="0.2dp"
57 android:background="#33000000"/>
58
59 </LinearLayout>
60
61
62 </FrameLayout>
63
64
65 </RelativeLayout>

item布局    上面和ll_top一样,下面部分是显示一张大图片

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:orientation="vertical"
6 >
7
8 <LinearLayout
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:gravity="center_vertical"
12 android:orientation="horizontal"
13 android:background="@color/white"
14 >
15
16 <ImageView
17 android:layout_width="30dp"
18 android:layout_height="30dp"
19 android:src="@drawable/ic_launcher"/>
20
21 <TextView
22 android:layout_width="wrap_content"
23 android:layout_height="wrap_content"
24 android:text="name"/>
25
26 </LinearLayout>
27
28 <View
29
30 android:layout_width="match_parent"
31 android:layout_height="0.2dp"
32 android:background="#33000000" />
33
34
35 <ImageView
36 android:paddingTop="5dp"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:src="@drawable/user"/>
40
41
42 </LinearLayout>

activity   设置addOnScrollListener 是关键

1 public class RelistActivity extends AppCompatActivity {
2
3 @Bind(R.id.recyclerView)
4 RecyclerView recyclerView;
5
6 @Bind(R.id.ll_top)
7 LinearLayout ll_top;
8
9 @Bind(R.id.tv_top)
10 TextView tv_top;
11
12 private int height;
13 private int currentPosition = 0;
14
15 @Override
16 protected void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.activity_relist);
19 ButterKnife.bind(this);
20
21 final LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
22 RelistAdapter adapter=new RelistAdapter();
23
24 recyclerView.setLayoutManager(linearLayoutManager);
25 recyclerView.setAdapter(adapter);
26
27
28 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
29 @Override
30 public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
31 super.onScrollStateChanged(recyclerView, newState);
32
33 height=ll_top.getHeight();
34
35 }
36
37 @Override
38 public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
39 super.onScrolled(recyclerView, dx, dy);
            if (currentPosition!=linearLayoutManager.findFirstVisibleItemPosition()){
51 currentPosition=linearLayoutManager.findFirstVisibleItemPosition();
52 ll_top.setY(0);
53
54 tv_top.setText(" "+currentPosition);
55 }
40 View view=linearLayoutManager.findViewByPosition(currentPosition+1); 41 if (view==null)return; 42 43 if (view.getTop()<=height){ 44 ll_top.setY(-(height-view.getTop())); 45 }else { 46 ll_top.setY(0); 47 } 48 49 50 56 } 57 }); 58 59 } 60 61 62 63 64 65 66 67 class RelistAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ 68 69 70 @Override 71 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 72 View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_re,parent,false); 73 return new ReHolder(view); 74 } 75 76 @Override 77 public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 78 79 } 80 81 @Override 82 public int getItemCount() { 83 return 10; 84 } 85 86 class ReHolder extends RecyclerView.ViewHolder{ 87 88 public ReHolder(View itemView) { 89 super(itemView); 90 ButterKnife.bind(this,itemView); 91 } 92 } 93 } 94 95 96 }

Recyclerview 顶部悬停 stick的更多相关文章

  1. Android滑动到顶部悬停

    无图说卵,先上图 jianshu-top.gif 查阅资料后,发现网上大部分都是用这种方法实现的: 多写一个和需要悬浮的部分一模一样的layout,先把浮动区域的可见性设置为gone.当浮动区域滑动到 ...

  2. Android ScrollView滚动实现大众点评、网易云音乐评论悬停效果

    今天听着网易云音乐,写着代码,真是爽翻了. http://blog.csdn.net/linshijun33/article/details/47910833 网易云音乐这个产品亮点应该在评论这一模块 ...

  3. RecyclerView+FloatingActionButton应用

    一.效果图 二.实现步骤 1.XML布局-添加依赖 <LinearLayout android:id="@+id/layout" android:layout_width=& ...

  4. collectionview cell吸顶效果

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Hiragino Sans GB"; color: #cf8724 } ...

  5. android动画源码合集、动态主题框架、社交app源码等

    Android精选源码 仿MIUI果冻视图-BouncingJellyView   一个快速易用的动态主题框架   android动画效果集合源码   android使用Kotlin开发的Dribbb ...

  6. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    写在前面 参考答案及资源在看云平台发布,如果大家想领取资源以及查看答案,可直接前去购买.一次购买永久可看,文档长期更新!有什么意见与建议欢迎您及时联系作者或留言回复! 文档描述 本文是关注微信小程序的 ...

  7. NestedScrollView

    参考文章: Android滑动到顶部悬停 NestedScrollView的使用 效果图: 实现步骤: 将需要悬浮的layout放到CollapsingToolbarLayout之外,AppBarLa ...

  8. 折叠表格思路及遇到的问题(tableView:viewForHeaderInSection:的section从1开始,不是从0开始)

    项目需要做了一个类似qq联系人的折叠表格,思路很简单:设置每个section的header,在header上显示组名等信息,然后根据折叠与否,设置每个section中cell的数量,如果折叠,则将之设 ...

  9. 【iOS开发-58】tableView初识:5个重要方法的使用和2种样式的差别

    创建一个tableView,直接拖拽放在storyboard里面就可以. (1)先创建一个数据模型类WSCarGroup,在WSCarGroup.h文件里: #import <Foundatio ...

随机推荐

  1. 笔试算法题(39):Trie树(Trie Tree or Prefix Tree)

    议题:TRIE树 (Trie Tree or Prefix Tree): 分析: 又称字典树或者前缀树,一种用于快速检索的多叉树结构:英文字母的Trie树为26叉树,数字的Trie树为10叉树:All ...

  2. Python的DEBUG LOG

    一直在嵌入式行业,熟悉嵌入式的朋友都很了解嵌入式设备上DEBUG的麻烦,特别是一些缺乏断电工具和没有UI界面的设备.久而久之,开发一个新东西,首先就是要先搞定DEBUG手段.最近写了几个测试的pyth ...

  3. 关于Google浏览器Unable to preventDefault inside passive event listener due to target being treated as passive.的解决方案

    最近写react项目的时候,引用了antd-mobile,在使用滚动组件的时候,发现谷歌浏览器会报以下警告 最初我以为是antd-mobile的问题导致的,然后我就无查看了之前的vue的项目,发现了类 ...

  4. flash-热风焊盘的制作

    计算部分: 热风焊盘的内径(ID)等于钻孔直径+20mil, 外径(OD)等于Anti-pad的直径,通常是比焊盘的直径大20mil. 开口宽度等于(OD-ID)/2+10mil,保留整数位. 如果焊 ...

  5. 【转】Asp.net MVC Comet推送

    原文链接:http://www.cnblogs.com/kissdodog/p/4283485.html 一.简介 在Asp.net MVC实现的Comet推送的原理很简单. 服务器端:接收到服务器发 ...

  6. ajax导出excel文件并增加等待动画效果

    html: <button class="btn btn-default" onclick="logToExcel('{:url('userLogToExcel', ...

  7. [luoguP1896] [SCOI2005]互不侵犯King(状压DP)

    传送门 先预处理出来一行中放置国王的所有情况和每种情况所用的国王个数. f[i][j][k]表示前i行放j个国王且最后一行的状态为k的方案数 状压DP即可 #include <cstdio> ...

  8. 【ZJOI2017 Round1练习&BZOJ5354】D7T3 room(DP)

    题意: 思路: 写了两种版本 考场版本 ..,..]of longint; t:..,..]of longint; n,m,i,j,k,oo,ans,d1:longint; function min( ...

  9. msp430入门学习00

    在TI官网上找到MSP430的程序例程.数据手册.使用指南等文件.以MSP430F169为例,步骤如下: 1)进入ti官网:http://www.ti.com.cn/ 或者http://www.ti. ...

  10. 类(Class)

    类 · 目的 面向对象的最主要目的是提高程序的重复使用性. · 包括 属性(attribute).方法(method) · 示例 class Bird(object): have_feather = ...