最全ListView扩展的实例和补充
ListView相信大家都是很熟练的,但是ListView的功能还是有不少的,如:具有弹性的ListView、自动显示隐藏的ListView、聊天ListView、动态改变ListView的布局...下面我们来看看吧:
1. ListView的常用属性:(因为很简单就不做详细的介绍啦)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?xml version= "1.0" encoding= "utf-8" ?>
<ListView xmlns:android= "http://schemas.android.com/apk/res/android"
android:id= "@+id/listview"
android:layout_width= "fill_parent"
android:layout_height= "fill_parent"
android:cacheColorHint= "#00000000"
android:dividerHeight= "30px"
android:divider= "@drawable/ic_launcher"
android:fadingEdge= "vertical"
android:scrollbars= "horizontal|vertical"
android:fastScrollEnabled= "true"
android:scrollbarStyle= "outsideInset"
/>
<!--
android:cacheColorHint= "#00000000" //设置拖动背景色为透明
android:dividerHeight= "30px" //listview item之间的高度
android:divider= "@drawable/ic_launcher" //listview item之间的背景或者说是颜色
android:fadingEdge= "vertical" //上边和下边有黑色的阴影 值为none的话就没有阴影
android:scrollbars= "horizontal|none" //只有值为horizontal|vertical的时候,才会显示滚动条,并且会自动影藏和显示
android:fastScrollEnabled= "true" //快速滚动效果,配置这个属性,在快速滚动的时候旁边会出现一个小方块的快速滚动效果,自动隐藏和显示,
android:scrollbarStyle= "outsideInset" //四个值的含义如下
1 >outsideInset : 该ScrollBar显示在视图(view)的边缘,增加了view的padding. 如果可能的话,该ScrollBar仅仅覆盖这个view的背景.
2 >outsideOverlay : 该ScrollBar显示在视图(view)的边缘,不增加view的padding,该ScrollBar将被半透明覆盖
3 >insideInset :该ScrollBar显示在padding区域里面,增加了控件的padding区域,该ScrollBar不会和视图的内容重叠.
4 >insideOverlay : 该ScrollBar显示在内容区域里面,不会增加了控件的padding区域,该ScrollBar以半透明的样式覆盖在视图(view)的内容上.
2. ListView的一些重要属性:
首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false android:stackFromBottom="true" 第二是transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。 第三cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。 如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了 第四divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线 android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了 第五fadingEdge属性,上边和下边有黑色的阴影 android:fadingEdge="none"设置后没有阴影了~ 第六scrollbars属性,作用是隐藏listView的滚动条, android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏 第七fadeScrollbars属性,android:fadeScrollbars="true" 配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。 第八fastScrollEnabled属性 , 很多开发者不知道ListView列表控件的快速滚动滑块是如何启用的,这里Android开发网告诉大家,辅助滚动滑块只需要一行代码就可以搞定,如果你使用XML布局只需要在ListView节点中加入 android:fastScrollEnabled="true" 这个属性即可,而对于Java代码可以通过myListView.setFastScrollEnabled(true); 来控制启用,参数false为隐藏。 还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块,同时该方法仍然是AbsListView的基础方法,可以在ListView或GridView等子类中使用快速滚动辅助。 第九drawSelectorOnTop属性 When set to true, the selector will be drawn over the selecteditem. Otherwise the selector is drawn behind the selected item. Thedefault value is false. android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到 android:drawSelectorOnTop="false"点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的
3. ListView的扩展:
今天从网上看了个扩展的listView的例子,感觉还蛮炫,自己也试着做了下。 由于比较简单,所有就直接上代码:
[html] view plaincopy
看一下运行在模拟器上的效果:
4. 具有弹性的ListView:
效果图: 主要代码:
[java] view plaincopy
测试代码:
[java] view plaincopy
[html] view plaincopy
5. 自动显示、隐藏布局的ListView:
下面这个效果是,向下滑动 ListView ,其顶部布局自动显示;向上滑动 ListView ,其顶部的布局自动隐藏。效果如下:
首先这个效果的实现大致需要如下几步:
1. 让其没有 ActionBar ,可在 style.xml 中设置主题样式 Theme.AppCompat.Light.NoActionBar 。
2. 为了让 ListView 的第一个条目不被其顶部的布局所遮住,所以给 ListView 增加了一个头部 HeaderView 。头部的高度正好等于 ActionBar 的高度,高度为:R.dimen.abc_action_bar_default_height_material 。
添加头部的代码:
[java] view plaincopy
3. 设置 ListView 的最小滑动距离,其滑动距离大于最小滑动距离后我们才认为 ListView 有所滑动,得到最小滑动距离代码:
[java] view plaincopy
4. 由上面的第三步可以看出,要判断其滑动,或者根据其需要上下的滑动来显示或者隐藏 ListView 顶部的布局都需要滑动监听事件,可以使用 OnTouchListener 接口来完成。在该接口重写的 onTouch() 方法中来获取滑动的坐标,并根据坐标差来判断 ListView 的滑动方向。
5. 由于需要根据 ListView 的滑动方向来显示或者隐藏其顶部的布局,所以其顶部的布局需要有显示或者隐藏的动画效果,可以使用 ObjectAnimator 来实现。关于 ObjectAnimator 在前面的博客中有所使用。
6. 当然了要实现该效果还需要在布局文件中让一个组件至于 ListView 上才行,布局文件代码:
activity_main.xml ;
[html] view plaincopy
完整的 MainActivity.java 的代码:
[java] view plaincopy
6. ListView实现聊天:
下载地址:http://download.csdn.net/detail/shenggaofei/9615547
SimpleAdapter适配器初次尝试,那么离实现最终想要的效果也不远啦,只要仿照chata的布局,再编写第二位聊天人(“路人甲”)的布局chatb——只要让他靠右显示就行~。 但是这样我们每次都要很麻烦的定义一遍SimpleAdapter,为了“偷懒”,我们直接来编写自己的Adapter,这样每次定义就方便多了。 先附上最终的代码:
[java] view plaincopy
如上代码,在setAdapter时使用了自己的ChatAdapter,以下是类文件代码:
[java] view plaincopy
ChatAdapterd的类实现了ListAdapter的接口,并通过ChatEntity中的内容设置了定义布局中聊天对象名字txvName及聊天内容txvInfo的内容,当然你肯定能明白ChatEntity就是存放聊天信息等内容的实体类。 这里我们可以这样写,就是因为ListAdapter的接口是绑定Data和ListView的适配器,实际上我们常用的ArryaAdapter、SimpleAdapter、CursorAdapter就是他的子类。 关系如下: 这样再看代码,甚至再回头看SimpleAdapter就感觉好理解多了,其他内容不细说了,具体参照源码:http://download.csdn.net/detail/xiaowei_cqu/3886321 再上一遍效果图: 7. 动态改变ListView的布局:
效果图:
代码如下:
也可以动态加载布局文件也可以的: 在addCustomView()方法中这么写也是可以的:
图片就放你们喜欢的。。
|
最全ListView扩展的实例和补充相关推荐
- python 元类的call_python3 全栈开发 - 内置函数补充, 反射, 元类,__str__,__del__,exec,type,__call__方法...
python3 全栈开发 - 内置函数补充, 反射, 元类,__str__,__del__,exec,type,__call__方法 一, 内置函数补充 1,isinstance(obj,cls)检查 ...
- 一个全屏页面切换实例
这里写了一个全屏切换的实例,纯手工,没有使用任何插件~ <!DOCTYPE html> <html lang="zh-CN"> <head> & ...
- php开启sockets模块,linux下开启php的sockets扩展支持实例
下个相同版本的php源码,进行编译安装,再按照上面步骤搞,生成的so.copy到rpm装的那个,修改php.ini进行扩展就行了, 或者到网上找相同版本,相同系统 的编译好的so文件. 在linux下 ...
- typec扩展坞hdmi没反应_全功能扩展坞Type-C Docking (扩展坞) 方案讲解-可实现拔插不掉屏...
Dock,又叫做扩展坞,这类产品的流行是因为笔记本电脑的USB或者视频等接口数量有限,用户希望扩展出更多数量的或者更多种类的接口,来满足多元应用需求.由于笔记本接口输出功率的限制,扩展坞通常需要通过自 ...
- 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
文章目录 一.扩展方法示例 二.实例扩展方法配置 三.编译实例扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 实例扩展方法 一.扩展方法示例 为 Thread 扩展 he ...
- Android ListView性能优化实例讲解
前言: 对于ListView,大家绝对都不会陌生,只要是做过Android开发的人,哪有不用ListView的呢? 只要是用过ListView的人,哪有不关心对它性能优化的呢? 关于如何对ListVi ...
- catia知识工程_【开团】CATIA超全直播课程&实例讲解!
为了广大盟友的学习需求 我们特别为盟友们准备这次 "超值.超全.超量" 的CATIA全面直播课 更是业界大牛:小狼老师 全程授课! 越多报名! 越多优惠! (开团人数只要达到折扣要 ...
- axure实现复选框全选_Axure RP实例教程:全选与取消全选效果
原标题:Axure RP实例教程:全选与取消全选效果 Axure RP 9 Mac这款原型设计软件能让设计者快速创建应用软件,或者在web网站的线框图.流程图.原型和规格的设计制作,从低到高的视觉和交 ...
- php mhash,PHP加密扩展库-Mhash扩展库实例用法详解
PHP加密扩展库-Mhash扩展库 什么是Mhash扩展库:Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启.mhash的可以用于创建校验数值,消息摘要,消息认证码, ...
- android listview 自定义控件,Android 自定义弹性ListView控件实例代码(三种方法)
关于在Android中实现ListView的弹性效果,有很多不同的方法,网上一搜,也有很多,下面贴出在项目中经常用到的两种实现ListView弹性效果的方法(基本上拿来就可以用),供大家参考: 弹性L ...
最新文章
- shell脚本编程基础(1)及RAID阵列
- AI产品之路:神经元与神经网络
- Windows环境下配置php的curl扩展
- 来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??
- (原創) 如何使用Operator Overloading? (C/C++)
- 在React中加载数据:redux-thunk,redux-saga,suspense,hooks
- iView学习笔记(四):Form表单操作
- Latex参考文献引用格式,期刊参考文献引用格式注意事项
- 松下FPX通用通信编程实例
- Paper和陈丹琦撞车是一种怎样的体验
- 供应链金融系统建设的具体实施步骤
- H5+CSS+JavaScript入门学习
- pytorch学习随手记
- 帆软注册文件_报表组件FineReport加密狗注册机理及使用方法
- Python与数据分析
- 解决一直Gradle Build Running的问题
- 清晰的理解大端和小端
- 使用cdrecord命令刻录光盘
- 洛谷 P5594 【XR-4】模拟赛 视频讲解(二维数组、模拟)
- 泛函分析笔记06:Lp与lp空间