详解ListView属性

转载 2016年08月30日 16:35:54

引子:

在android界面中,经常会用到ListView控件,在UI设计中,很多人都希望能够美化一下这个控件的背景。改变背景其实很简单,在布局文件中,ListView控件加入代码android:background="@drawable/bg",bg是背景图片的名称。不过这样做后,背景是改变了,但当拖动时,或者点击list的空白位置会发现ListItem都变成黑色的了,破坏了整体的效果。如下图所示:
 

 
这是为什么呢?因为ListView的默认ListItem的背景是透明的,而ListView的背景是固定不变的,所以滚动的时候背景要和当前每个Item的显示内容进行混合运算,android为了优化这个过程,就用了android:cacheColorHint的属性,在黑色主题下默认颜色值为#191919,所以就出现了刚才的画面。有一半是黑色的。
如果只是换背景颜色的话,那么直接指定android:cacheColorHint为你所想要的颜色值就好了。
如果你是想要图片当背景的话,只要把android:cacheColorHint这个值设置定为透明,就是设置值为#00000000就可以了。这样美化后会牺牲一些效率。
美化后的效果图:


在我们的日常开发中,ListView是一个最常用的组件,所以我们非常有必要对它的属性进行全面的了解。现在就以一个简单的实例,对ListView的属性做一个简单的讲解。 

首先我们给出简单的布局文件,就一个简单的ListView列表 

[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  2.     xmlns:tools="http://schemas.android.com/tools"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:background="#FFE1FF"   
  6.     android:orientation="vertical" >   
  7.     <ListView   
  8.         android:id="@+id/listView1"   
  9.         android:layout_width="match_parent"   
  10.         android:layout_height="match_parent" />   
  11. </LinearLayout>   

Activity文件,使用ArrayAdapter对列表进行填充 

[java] view plain copy
  1. public class MainActivity extends Activity {   
  2.     private ListView listView;   
  3.    
  4.     @Override   
  5.     protected void onCreate(Bundle savedInstanceState) {   
  6.         super.onCreate(savedInstanceState);   
  7.    
  8.         listView = (ListView) findViewById(R.id.listView1);   
  9.         final List<String> adapterData = new ArrayList<String>();   
  10.         for (int i = 0; i < 20; i++) {   
  11.            adapterData.add("ListItem" + i);   
  12.         }   
  13.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   
  14.         android.R.layout.simple_list_item_1, adapterData);   
  15.         listView.setAdapter(adapter);   
  16.      }   
  17. }   

运行效果如下 

接下来我们在布局的ListView中添加如下属性,并演示其效果 


1.android:stackFromBottom属性:在ListView和GridView中使用,使它们的内容从底部开始显示 

 布局文件修改如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:stackFromBottom="true" />   

运行效果如下,列表在开始的时候,内容就从底部开始显示: 


2.android:transcriptMode属性:设置列表的transcriptMode模式,该模式指定列表添加新的选项的时候,是否自动滑动到底部,显示新的选项。 

    disabled:取消transcriptMode模式,默认的 

    normal:当接受到数据集合改变的通知,并且仅仅当最后一个选项已经显示在屏幕的时候,自动滑动到底部 

    alwaysScroll:无论当前列表显示什么选项,列表将会自动滑动到底部显示最新的选项 

布局修改如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:stackFromBottom="true"   
  6.     android:transcriptMode="alwaysScroll" />   

Activity文件代码如下 

[java] view plain copy
  1. public class MainActivity extends Activity {   
  2.     private ListView listView;   
  3.     @Override   
  4.     protected void onCreate(Bundle savedInstanceState) {   
  5.         super.onCreate(savedInstanceState);   
  6.         setContentView(R.layout.activity_main);   
  7.         listView = (ListView) findViewById(R.id.listView1);   
  8.         final List<String> adapterData = new ArrayList<String>();   
  9.         for (int i = 0; i < 20; i++) {   
  10.           adapterData.add("ListItem" + i);   
  11.         }   
  12.         final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   
  13.         android.R.layout.simple_list_item_1, adapterData);   
  14.         listView.setAdapter(adapter);   
  15.    
  16.         //定时给列表添加新的选项,并通知列表更新   
  17.         final Handler handler = new Handler();   
  18.         Timer timer = new Timer();   
  19.         timer.scheduleAtFixedRate(new TimerTask() {   
  20.             @Override   
  21.             public void run() {   
  22.                 adapterData.add("New ListItem");   
  23.                 handler.post(new Runnable() {   
  24.                 @Override   
  25.                 public void run() {   
  26.                     adapter.notifyDataSetChanged();   
  27.                 }  
  28.             });    
  29.         }   
  30.     }, 30003000);   
  31. }   
运行结果如下 

6秒后的结果(每当添加新的表项的时候,列表自动滑动的底部显示最新的表项) 

其它两个normal和disable属性就不在演示,如上已经解释的比较清楚,大家可以自己试验感受一下 


3.android:cacheColorHint属性:该属性在官方文档和个资料中找不到比较好的描述;根据实际的体验,当你设置的ListView的背景时,应该设置该属性为“#00000000”(透明),不然在滑动的时候,列表的颜色会变黑或者背景图片小时的情况 


4.android:divider属性:列表之间绘制的颜色或者图片。一般开发中用于分隔表项 

在实际开发过程中,如果你不想要列表之间的分割线,可以设置属性为@null,布局文件如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:divider="@null" />   

运行结果如下 


5.android:fadingEdge属性:设置列表的阴影 

布局文件如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:background="@drawable/ic_launcher"   
  6.     android:cacheColorHint="#000000ff"   
  7.     android:fadingEdge="vertical"    
  8.     android:fadingEdgeLength="40dp"/>   

运行效果如下 


6.android:fastScrollEnabled属性:启用快速滑动条,它能快速的滑动列表。但在实际的测试中发现,当你的数据比较小的时候,是不会显示快速滚动条。 

布局文件如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:fastScrollEnabled="true" />   

运行结果如下(当你快速滑动列表的时候,就出现如下快速滑动滚动条): 


7.android:listSelector属性:用来指明列表当前选中的选项的图片  

布局文件如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:listSelector="@drawable/ic_launcher" />   

运行结果如下(当用手指点击ListItem3的时候,出现如下效果,图片显示在ListItem3的底部,并未遮挡ListItem3): 


8.android:drawSelectorOnTop属性:当设置为true时候,listSelector的图片将会被绘制在被选中的选项之上 

布局文件如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.   <span style="color:#ff0000;"> </span> android:drawSelectorOnTop="true"   
  6.     android:listSelector="@drawable/ic_launcher" />   

运行结果如下(对比上面,发现图片遮挡了ListItem3的显示): 


9.android:choiceMode属性:定义了列表的选择行为,默认的情况下,列表没有选择行为 

none:正常不指定选择的列表 

singleChoice:列表允许一个选择 

multipleChoice:列表允许选择多个 

mutipleChoiceModal 

布局文件如下 

[html] view plain copy
  1. <ListView   
  2.     android:id="@+id/listView1"   
  3.     android:layout_width="match_parent"   
  4.     android:layout_height="match_parent"   
  5.     android:choiceMode="multipleChoice" />   

Activity文件如下 

[java] view plain copy
  1. public class MainActivity extends Activity {   
  2.     private ListView listView;   
  3.     @Override   
  4.     protected void onCreate(Bundle savedInstanceState) {   
  5.         super.onCreate(savedInstanceState);   
  6.         setContentView(R.layout.activity_main);   
  7.         listView = (ListView) findViewById(R.id.listView1);   
  8.         final List<String> adapterData = new ArrayList<String>();   
  9.         for (int i = 0; i < 40; i++) {   
  10.             adapterData.add("ListItem" + i);   
  11.         }   
  12.         //只有使用支持选择的布局才能选择多项   
  13.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   
  14. android.R.layout.simple_list_item_checked, adapterData);   
  15.         listView.setAdapter(adapter);   
  16.         listView.setFastScrollEnabled(true);   
  17.     }   
  18. }   

运行结果如下(点击多个选项),关于nono和singleChoice可以自己尝试一下 

相关文章推荐

ListView的属性及方法详解 .

本文仅介绍ListView相关的XML属性及方法,        关于ListView在App中的用法:Android ListView 常见用法。             关于ListVie...
  • smxueer
  • smxueer
  • 2014年05月04日 15:37
  • 571

VB ListView控件属性、方法、事件 详解

常用属性: View设置或返回控件的视图类型 值 说明 1-LvwIcon 图标类型 2-LvwSmallIcon 小图标类型 3-LvwList 列表类型 4-LvwReport 报表类...

日积月累:ListView的属性详解和探究

在我们的日常开发中,ListView是一个最常用的组件,所以我们非常有必要对它的属性进行全面的了解。现在就以一个简单的实例,对ListView的属性做一个简单的讲解。    首先我们给出简单的...

ListView的属性及方法详解

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

ListView的属性及方法详解

本文转载于:http://blog.csdn.net/vector_yi/article/details/23195411 近期在重新学习Android控件知识,目前进行到ListView,感觉这...

android listview 属性详解

android listview 属性详解

Android ListView几个属性详解

第一 stackFromBottom属性, 设置该属性之后你做好的列表在显示的时候会显示列表的最后几条信息,滚动条也会滚到最下面,值为true和false android:stackFro...
  • Cwuhao
  • Cwuhao
  • 2012年04月28日 15:26
  • 2596

android ListView 一些重要属性详解

首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false android:stackFromBottom="true" 第二是trans...

Android listview常用的属性

  • 2015年01月08日 14:48
  • 2KB
  • 下载

android_ListView的属性

  • 2013年08月25日 16:41
  • 31KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:详解ListView属性
举报原因:
原因补充:

(最多只允许输入30个字)