ListView的属性及方法详解

来源:互联网 发布:淘宝秒杀能抢到吗 编辑:程序博客网 时间:2024/06/05 04:37

近期在重新学习Android控件知识,目前进行到ListView,感觉这是一块尤其难啃的硬骨头:最为常用、用法较复杂、涉及的其他Android知识也较多。因此决定系统地好好复习一遍ListView。其中涉及到的其他知识点将在后期以链接的形式不断进行更新。


           本文仅介绍ListView相关的XML属性及方法,

       关于ListView在App中的用法:Android ListView 常见用法。

            关于ListView中需要注意的地方,请移步ListView中几个需要注意的属性.

一、ListView类的继承关系

     

java.lang.Object   ↳android.view.View    ↳android.view.ViewGroup     ↳android.widget.AdapterView<T extends android.widget.Adapter>      ↳android.widget.AbsListView       ↳android.widget.ListView


可以看出,ListView并不直接继承于View,而是直接继承于抽象类AbsListView.

ListView的直接子类有:ExpandableListView.

二、ListView概述

      ListView是一个用来纵向显示条目的视图,这些条目内容来自于与该ListView相关联的ListAdapter.

三、嵌套类

     

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. class ListView.FixedViewInfo//用来在列表内展现一个固定位置视图,如在列表顶端的header和在列表底端的footer  

四、XML属性

    1.ListView的XML属性

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. android:divider//在列表条目之间显示的drawable或color  
  2.   
  3. android:dividerHeight//用来指定divider的高度  
  4.   
  5. android:entries//构成ListView的数组资源的引用。对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式  
  6.   
  7. android:footerDividersEnabled//当设为false时,ListView将不会在各个footer之间绘制divider.默认为true。  
  8.   
  9. android:headerDividersEnabled//当设为false时,ListView将不会在各个header之间绘制divider.默认为true。  


  2.继承自AbsListView的XML属性

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. android:cacheColorHint// 表明这个列表的背景始终以单一、固定的颜色绘制,可以优化绘制过程。  
  2.   
  3. android:choiceMode//为视图指定选择的行为。可选的类型有:none、singleChoice、multipleChoice、multipleChoiceModal。  
  4.   
  5. android:drawSelectorOnTop// 若设为true,选择器将绘制在选中条目的上层。默认为false。  
  6.   
  7. android:fastScrollEnabled// 设置是否允许使用快速滚动滑块。  
  8.   
  9. android:listSelector// 设置选中项显示的可绘制对象,可以是图片或者颜色属性。  
  10.   
  11. android:scrollingCache// 设置在滚动时是否使用绘制缓存。若设为true,则将使滚动表现更快速,但会占用更内存。默认为true。  
  12.   
  13.   
  14. android:smoothScrollbar// 为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的可见条目来决定滚动条的属性。  
  15.   
  16. android:stackFromBottom// 设置GridView和ListView是否将内容从底部开始显示。  
  17.   
  18. android:textFilterEnabled// 当设为真时,列表会将结果过滤为用户类型。前提是这个列表的Adapter必须支持Filterable接口。  
  19.   
  20. android:transcriptMode//设置列表的transcriptMode.有如下选项可选:  
  21. //(1)disabled          禁用TranscriptMode,也是默认值;  
  22. //(2)normal             当新条目添加进列表中并且已经准备好显示的时候,列表会自动滑动到底部以显示最新条目;  
  23. //(3)alwaysScroll   列表会自动滑动到底部,无论新条目是否已经准备好显示.  

    3.继承自ViewGroup的XML属性
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. android:addStatesFromChildren// 设置这个ViewGroup的drawable状态是否包括子View的状态。若设为true,当子View如EditText或Button获得焦点时,整个ViewGroup也会获得焦点。  
  2.   
  3. android:alwaysDrawnWithCache// 设置ViewGroup在绘制子View时是否一直使用绘图缓存。默认为true。  
  4.   
  5. android:animationCache// 设置布局在绘制动画效果时是否为其子View创建绘图缓存。若设为true,将会消耗更多的内存,要求持续时间更久的初始化过程,但表现更好。默认为true。  
  6.   
  7. android:clipChildren// 设置子View是否受限于在自己的边界内绘制。若设为false,当子View所占用的空间大于边界时可以绘制在边界外。默认为true。  
  8.   
  9. android:clipToPadding//定义布局间是否有间距。默认为true。  
  10.   
  11. android:descendantFocusability// 定义当寻找一个焦点View的时候,ViewGroup与其子View之间的关系。可选项为:  
  12. //(1)beforeDescendants       ViewGroup会比其子View更先获得焦点;  
  13. //(2)afterDescendants           只有当无子View想要获取焦点时,ViewGroup才会获取焦点;  
  14. //(3)blockDescendants         ViewGroup会阻止子View获取焦点  
  15.   
  16. android:layoutAnimation//定义当ViewGroup第一次展开时的动画效果,也可人为地在第一次展开后调用。  
  17.   
  18. android:persistentDrawingCache// 定义绘图缓存的持久性。有如下可选项:  
  19. //(1)none                    当使用过后不保留绘图缓存  
  20. //(2)animation    在layout animation之后保留绘图缓存  
  21. //(3)scrolling    在Scroll操作后保留绘图缓存  
  22. //(4)all     always保留绘图缓存  
  23.   
  24.       

   4.继承自View的XML属性

   太多了………………饶过我吧


五、常用public方法

      1.add/remove  方法

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. void addFooterView(View v)//增加一个固定在列表底部的View,参数 v为欲添加的视图  
  2.   
  3. void addFooterView(View v,Object data,boolean isSelectable)//增加一个固定在列表底部的View,参数 v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选  
  4.   
  5.   
  6. void addHeaderView(View v)//增加一个固定在列表顶部的View,参数 v为欲添加的视图  
  7.   
  8. void addHeaderView(View v,Object data,boolean isSelectable)//增加一个固定在列表顶部的View,参数 v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选  
  9.   
  10. boolean removeFooterView(View v)//去除一个之前添加的FooterView,参数v为欲删除的视图,若成功删除则返回true  
  11.   
  12. boolean removeHeaderView(View v)//去除一个之前添加的HeaderView,参数v为欲删除的视图,若成功删除则返回true  

      2.响应事件方法

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. boolean OnKeyDown(int keyCode,KeyEvent event)//当按下键时响应  
  2.   
  3. boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重复按下键时响应,repeatCount为按下次数  
  4.   
  5. boolean OnKeyUp(int keyCode,KeyEvent event)//当键被释放时响应  

      

        3.get方法

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ListAdapter getAdapter()//返回ListView正在使用的Adapter  
  2.   
  3. Drawable getDivider()//以Drawable形式返回divider  
  4.   
  5. int getDividerHeight()//这个……真不想解释了  
  6.   
  7. int getFooterViewCount()//返回FooterView的个数,若无返回0  
  8.   
  9. int getHeaderViewCount()//返回HeaderView的个数,若无返回0  
  10.   
  11. boolean getItemsCanFocus()//返回是否有可获得焦点的条目  
  12.   
  13. int getMaxScrollAmount()//The maximum amount a list view will scroll in response to an arrow event.(求翻译)  
  14.   
  15. Drawable getOverscrollFooter()//返回绘制在所有条目之下的drawable  
  16.   
  17. Drawable getOverscrollHeader()//返回绘制在所有条目之上的drawable  



     4.set方法

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. void setAdapter(ListAdapter adapter)//为ListView绑定Adapter  
  2.   
  3. void setCacheColorHint(int color)//参数为0时,将CacheColor设为透明;参数非零时,指定一种颜色作为ListView的背景  
  4.   
  5. void setDivider(Drawable divider)//为ListView中每个条目之间设定一个Divider  
  6.   
  7. void setDividerHeight(int height)//设定Divider的高度,单位为pixel  
  8.   
  9. void setFooterDividerEnabled(boolean footDividerEnabled)//设置FooterView之间的Dividers是否可用  
  10.   
  11. void setHeaderDividerEnabled(boolean headDividerEnabled)//设置HeaderView之间的Dividers是否可用  
  12.   
  13. void setItemsCanFocus(boolean itemsCanFocus)//设置是否包含可获取焦点的Item  
  14.   
  15. void setOverscrollFooter(Drawable footer)//设置一个当滚动时或ListView未填满屏幕时能显示在ListView下方的Drawable  
  16.   
  17. void setOverscrollHeader(Drawable header)//设置一个当滚动时能显示在ListView上方的Drawable  
  18.   
  19. void setRemoteViewAdapter(Intent intent)//为此AbsListView设置一个通过intent连接到RemoteViewsService而提供的远程视图适配器  
  20.   
  21. void setSelection(int position)//设置被选中的条目。如果参数小于0,则position为0的条目将被选中  
  22.   
  23. void setSelectionAfterHeaderView()//选中headerView下方的第一条条目  



Android -----listView的属性大全
01<?xml version="1.0" encoding="utf-8"?>
02    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
03        android:id="@+id/listview"
04        android:layout_width="fill_parent"
05        android:layout_height="fill_parent"
06        android:cacheColorHint="#00000000" 
07        android:dividerHeight="30px"
08        android:divider="@drawable/ic_launcher"
09        android:fadingEdge="vertical"
10        android:scrollbars="horizontal|vertical"
11        android:fastScrollEnabled="true"
12        android:scrollbarStyle="outsideInset"
13        />
14    <!-- 
15     android:cacheColorHint="#00000000"  //设置拖动背景色为透明  
16     android:dividerHeight="30px"         //listview item之间的高度
17     android:divider="@drawable/ic_launcher"    //listview item之间的背景或者说是颜色
18     android:fadingEdge="vertical"         //上边和下边有黑色的阴影      值为none的话就没有阴影
19     android:scrollbars="horizontal|none"   //只有值为horizontal|vertical的时候,才会显示滚动条,并且会自动影藏和显示
20     android:fastScrollEnabled="true"        //快速滚动效果,配置这个属性,在快速滚动的时候旁边会出现一个小方块的快速滚动效果,自动隐藏和显示,
21     android:scrollbarStyle="outsideInset"  //四个值的含义如下
22    1>outsideInset :  该ScrollBar显示在视图(view)的边缘,增加了view的padding. 如果可能的话,该ScrollBar仅仅覆盖这个view的背景.
23    2>outsideOverlay :  该ScrollBar显示在视图(view)的边缘,不增加view的padding,该ScrollBar将被半透明覆盖
24    3>insideInset :该ScrollBar显示在padding区域里面,增加了控件的padding区域,该ScrollBar不会和视图的内容重叠.
25

    4>insideOverlay : 该ScrollBar显示在内容区域里面,不会增加了控件的padding区域,该ScrollBar以半透明的样式覆盖在视图(view)的内容上.

首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false

android:stackFromBottom="true"            

第二是 transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。 android:transcriptMode="alwaysScroll"  

第三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就可以实现滚动条的自动隐藏和显示。

26     -->

0 0
原创粉丝点击