博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android项目实战(二十):浅谈ListView悬浮头部展现效果
阅读量:6169 次
发布时间:2019-06-21

本文共 2353 字,大约阅读时间需要 7 分钟。

原文:

  先看下效果:需求是 滑动列表 ,其中一部分视图(粉丝数,关注数这一部分)在滑动到顶端的时候不消失,而是停留在整个界面头部。

 

我们先分析要解决的问题:

1、如何实现列表ListView顶部视图跟随ListView一起滑动

2、如何实现滑动过程中需要停留在顶部的视图

 

解决:

第一个问题,实现ListView与顶部视图一起滑动,ListView提供一个方法,addHeadView(View);  意思就是在ListView顶部添加一个View。那么这个View就能和ListView一起滚动。

第二个问题,怎么保证界面中间的某一部分视图滑动到顶部的时候停留在顶部呢?

首先我们这个停留在顶部的View(称为View1)是ListView.addHeadView()上去的,即滑动列表,这个View1会划出去,那么如何让它不划出去?只要在Listview所在布局最上方

也写一个同样的View(称为View2,View2和ListView同属于一个FragmentLayout)并先隐藏(Visible = 'gone'),当View1刚划出顶部的时候,View2显示。

View1刚划出顶部的时机就是:

当滑动时 firstVisibleItem>=要悬浮的 item的position时 让View2显示 ,否则隐藏。

 

代码实现:

首先布局文件:

头部布局:

1 
2
8
14

要停留在顶部的View布局:(这里是要停留在顶部的View,这里addHeadView到ListView顶部,跟随者ListView滑动到顶部消失,这时满足firstVisibleItem>=要悬浮的 item的position条件,主界面里在写一个相同的View显示即可)

主布局:

java代码:

1 private LinearLayout invis; 2     private ListView lv; 3     String[] strs; 4     @Override 5     protected void onCreate(Bundle savedInstanceState) { 6         super.onCreate(savedInstanceState); 7         setContentView(R.layout.activity_main); 8  9         invis = (LinearLayout) findViewById(R.id.invis);10 11         strs = new String[100];12 13         for (int i = 0; i < 20; i++) {14             strs[i] = "data-----" + i;15         }16 17         lv = (ListView) findViewById(R.id.lv);18         View header = View.inflate(this, R.layout.stick_header, null);//头部内容19         lv.addHeaderView(header);//添加头部20 21         lv.addHeaderView(View.inflate(this, R.layout.stick_action, null));//ListView条目中的悬浮部分 添加到头部22 23         lv.setAdapter(new ArrayAdapter
(this,24 android.R.layout.simple_list_item_1, strs));25 lv.setOnScrollListener(new AbsListView.OnScrollListener() {26 27 @Override28 public void onScrollStateChanged(AbsListView view, int scrollState) {29 30 }31 32 @Override33 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {34 if (firstVisibleItem >= 1) {35 invis.setVisibility(View.VISIBLE);36 } else {37 38 invis.setVisibility(View.GONE);39 }40 }41 });42 43 }

 

转载地址:http://fcnba.baihongyu.com/

你可能感兴趣的文章
python 异常处理
查看>>
Alpha 冲刺 (8/10)
查看>>
PHP正则表达式笔记和实例
查看>>
jQuery中的.live()与die()
查看>>
C++ 中的sort排序用法
查看>>
Vue_声明周期
查看>>
代码复审结果报告
查看>>
xxx.xxx.0.0/16 和 xxx.xxx.0.0/24的区别
查看>>
跟我学SharePoint 2013视频培训课程——网站导航及页面元素(2)
查看>>
Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的
查看>>
贵宾一本足够全本
查看>>
Remember the Word,LA3942(Trie树+DP)
查看>>
掌握SQL Monitoring这些特性,SQL优化
查看>>
[改善Java代码]建议40:匿名类的构造函数很特殊
查看>>
基于DDD的.NET开发框架 - ABP初探
查看>>
用 phpize 编译共享 PECL 扩展库
查看>>
《税收数据终端泄露防范及案例分析》
查看>>
String与InputStream相互转换
查看>>
ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据...
查看>>
Atitit 图像处理之理解卷积attilax总结
查看>>