android ListView几个比较特别的属性

来源:互联网 发布:me域名不能注册 编辑:程序博客网 时间:2024/06/05 08:34
 

由于这两天在做listView的东西,所以整理出来一些我个人认为比较特别的属性,通过设置这样的属性可以做出更加美观的列表

首先是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就可以实现滚动条的自动隐藏和显示

第七 android:overScrollMode="never" 设置是上拉下拉的蓝色背景 消失

第八在 ListView中设置Selector为null会报空指针?
mListView.setSelector(null);//空指针
试试下面这种:
mListView.setSelector(new ColorDrawable(Color.TRANSPARENT));

第九 android:fastScrollEnabled="true" ListView列表控件的快速滚动滑块

第十  ListView.INVALID_POSITION 每个listview都有无效的位置,如第一行的前一行,最后一行的后一行,這个无效的位置是一个常量

第十一 mListView.requestFocusFromTouch(); 
         mListView.setSelection(int index); 控制listview的选中 第一句再有button checkbox等用

12.
若你ListView项中含有Button,RadioButton,CheckBox等比ListView取得 焦点优先级高的控件时,ListView的setOnItemClickListener是不被执行的,这时你需要在你的xml文件中对这些控件添加 android:focusable="false" 注意这条语句要放在xml文件中修改,在代码中使用是无效的

13. 如何保持ListView的滚动条一直显示,不隐藏呢:  xml文件中做如下修改    android:fadeScrollbars="false"

14.ListView不通过notifyDataSetChanged()更新指定的Item
Listview一般大都是通过notifyDataSetChanged()来更新listview,但通过notifyDataSetChanged()会把界面上现实的的item都重绘一次,这样会影响ui性能。
可以通过更新指定的Item提高效率,伪代码如下:

  1. private void updateView(int itemIndex){    
  2.   int visiblePosition = yourListView.getFirstVisiblePosition();    
  3.   View v = yourListView.getChildAt(itemIndex - visiblePosition);//Do something fancy with your listitem view    
  4.   TextView tv = (TextView)v.findViewById(R.id.sometextview);  
  5.   tv.setText("Hi! I updated you manually");  
  6. }  
让ListView中长按某些Item时能弹出contextMenu,有些不能
定义了一个listView,并为他设置了setOnCreateContextMenuListener的监听,但这样做只能使这个listView中的所有项在长按的时候弹出contextMenu 。
有时希望的是有些长按时能弹出contextMenu,有些不能。解决这个问题的办法是为这个listView设置setOnItemLongClickListener监听,然后实现
如果这一项的id=1,就不能长按。 这样就可以了 
  1. public boolean onItemLongClick(AdapterView<?> parent, View view,   
  2. int position, long id) {   
  3.   if(id == 1){   
  4.     return true;   
  5.   }   
  6.   return false;   
  7. }  


ListView属性:

android:drawSelectorOnTop 点击Item时,为true时颜色在上,遮盖item里面的内容,默认是false。


如果对ListView设置setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)方法,那么isItemChecked(position)等方法才会起作用,可以用来判断ListView的item是否被点击选中,getCheckedItemCount()方法可以知道有多少被选中了。



0 0
原创粉丝点击