1、给ListView设置分割线,只需设置如下两个属性:
android:divider="#000"//设置分割线显示颜色
android:divider="@null"用于去掉listview的item之间的黑线
android:dividerHeight="1px"//此处非0,否则无效
2、android:fadingEdge -->设置拉滚动条时 ,边框渐变的放向。none(边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡)。fadingEdgeLength用来设置边框渐变的长度。
3、默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint 的属性,在黑色主题下默认的颜色值是#191919。如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint 为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint 指定为透明(#00000000)就可以;android:listSelector="#00000000"时点击item无默认背景色(橙色)。
XML属性
属性名称 |
描述 |
android:cacheColorHint |
指示该列表总是在固定的单色、不透明的背景下绘制。这允许列表优化其绘制过程 |
android:drawSelectorOnTop |
如果设为真,选择器将绘制在选中条目的上层。否则绘制在下层。默认为假 |
android:fastScrollEnabled |
允许使用快速滚动滑块,可以通过拖动该滑块在列表中快速滚动 |
android:listSelector |
用于在列表中指示当前选中条目的可绘制对象 |
android:scrollingCache |
当为真时,列表滚动使用绘图缓存。该选项使渲染更快,但占用更多的内存。 默认值为真 |
android:smoothScrollbar |
为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。 默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。 当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的 过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的 可见条目来决定滚动条的属性 |
android:stackFromBottom |
用于 ListView 和 GridView,指示他们的内容栈从底部开始 |
android:textFilterEnabled |
设为真时,列表会过滤根据用户的要求,过滤结果集。列表的适配器必须实现了 Filterable 接口,才能使其可用 |
android:transcriptMode |
设置列表的跳转模式。在跳转模式下,当加入新条目时,列表会滚动到底部, 使新条目可见 |
4、android:scrollbarStyle可以定义滚动条的样式和位置,可选值有insideOverlay、insideInset、outsideOverlay、outsideInset四种。其中inside和outside分别表示是否在view的padding区域内,overlay和inset表示覆盖在view上或是插在view后面,所以四种值分别表示:
insideOverlay:默认值,表示在padding区域内并且覆盖在view上
insideInset:表示在padding区域内并且插入在view后面
outsideOverlay:表示在padding区域外并且覆盖在view上,推荐这个
outsideInset:表示在padding区域外并且插入在view后面
分别对应效果如下图,从上面效果图个人觉得outsideOverlay最合适,视觉效果最好。
5、在代码中使用listView.addHeaderView(...)方法可以在ListView组件上方添加上其他组件,并且连结在一起像是一个新组件。如果多次使用addHeaderView(...) ,则最先添加的组件在最上方,按添加的先后顺序由上到下罗列。如下图:
此时listView 的 position = 0 的位置对应的是view1,而不再是原来listView中的第一条了。若要对做原来的ListView做不可见设置,可使用将listView的adapter中数据置空的方法,在可见时再还原数据,如:
--隐藏 ListView --
mStaffAdapter.mDataList=newArrayList<Map<String,Object>>();
mStaffAdapter.notifyDataSetChanged();
--展开 ListView --
mStaffAdapter.mDataList=mStaffDataList;//mStaffDataList是原来的缓存数据
mStaffAdapter.notifyDataSetChanged();