Android开发历程之三

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最合适,视觉效果最好。

Android开发历程之三_第1张图片

5、在代码中使用listView.addHeaderView(...)方法可以在ListView组件上方添加上其他组件,并且连结在一起像是一个新组件。如果多次使用addHeaderView(...) ,则最先添加的组件在最上方,按添加的先后顺序由上到下罗列。如下图:

Android开发历程之三_第2张图片

此时listView 的 position = 0 的位置对应的是view1,而不再是原来listView中的第一条了。若要对做原来的ListView做不可见设置,可使用将listView的adapter中数据置空的方法,在可见时再还原数据,如:

--隐藏 ListView --

 mStaffAdapter.mDataList=newArrayList<Map<String,Object>>();

 mStaffAdapter.notifyDataSetChanged();

--展开 ListView --

 mStaffAdapter.mDataList=mStaffDataList;//mStaffDataList是原来的缓存数据

 mStaffAdapter.notifyDataSetChanged();

你可能感兴趣的:(Android开发历程之三)