ListView使用技巧
来源:互联网 发布:ie60和ie80知乎 编辑:程序博客网 时间:2024/05/23 21:35
()设置分隔线
ListView默认是有分隔线的,可以通过android:divider=”@null”设置分隔线透明,也可以通过 android:divider和android:dividerHeight来设置分隔线的颜色(图片)和分隔线的高度。
注:分隔线是指每个Item之间的线,ListView高度设置为match_parent时,最后一个Item的后面也有分隔线,ListView高度设置为wrap_content最后一个Item没有分隔线。
()设置滚动条
ListView在滚动时,默认在右边是有滚动条的。可以设置android:scrollbars=”none”来取消滚动条。
()设置item点击效果
点击ListView的Item时,默认会出现一个点击效果。可以设置android:listSelector来改变Item点击的颜色。
()处理空数据时ListView显示的布局
可以通过setEmptyView(View emptyView)设置ListView在空数据显示的布局。
注:setEmptyView加载的emptyView必须与ListView在同一个布局文件中,可以把ListView和emptyView写在FrameLayout中。
()弹性(阻尼)ListView
这个效果有很多种实现方式,下面的方式是非常简单的
只需重写overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)方法,修改maxOverScrollY参数值
参数maxOverScrollY注释:Number of pixels to overscroll by in either direction along the Y axis.
@Overrideprotected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { float density = mContext.getResources(). getDisplayMetrics().density; int mMaxOverScrollY = (int) (density * 50); return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxOverScrollY, isTouchEvent);}
()ListView加载多种不同Item
只需要重写下面二个方法
int getViewTypeCount():返回不同布局的总数.
int getItemViewType(int position):返回第position个Item是那种类型,返回值必须从0开始,不然就会报错
()ListView和ScrollView冲突
如果ScrollView中存在ListView,那么ListView数据不会展示完全,这时需要重写onMeasure()方法
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = View.MeasureSpec. makeMeasureSpec(Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec);
()触摸事件
setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //向下时触发 break; case MotionEvent.ACTION_MOVE: //移动触发 break; case MotionEvent.ACTION_UP: //向上触摸 break; } return false; } });
这个方法只要触摸就一直被调用
()滚动事件
setOnScrollListener(new AbsListView.OnScrollListener(){ @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: //滚动停止 break; case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: //正在滚动 break; case AbsListView.OnScrollListener.SCROLL_STATE_FLING: //手指用力滑动,离开ListView后,由于惯性继续滚动 break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){ if (firstVisibleItem + visibleItemCount >= totalItemCount){ //滚动到最后一页" } if (lastVisibleItem > firstVisibleItem) { //往下滑动 } else if (lastVisibleItem <firstVisibleItem){ //往上滑动 } lastVisibleItem = firstVisibleItem; } });
onScrollStateChanged()方法:如果没有惯性滚动,会调用两次.如果存在惯性滚动,会调用三次
onScroll()方法:ListView滚动时会一直回调
firstVisibleItem参数:当前能看到的第一个Item(从0开始)
visibleItemCount参数:当前能看到的Item的总数
totalItemCount参数:整个ListView的Item总数
- ListView的使用技巧
- ListView控件使用技巧
- ListView 使用技巧
- ListView使用小技巧
- 【转贴】ListView使用技巧
- 分组ListView使用技巧
- ListView的使用技巧
- ListView使用技巧
- ListView使用技巧
- listview使用小技巧
- ListView使用技巧
- ListView使用技巧
- ListView使用技巧
- ListView的使用技巧
- ListView使用技巧总结
- ListView使用小技巧
- ListView的使用技巧
- ListView使用技巧
- Spring中@Transactional事务回滚(含实例详细讲解,附源码)
- 就这样真的赌了
- Android的TextView使用Html来处理图片显示、字体样式、超链接等
- C#如何读写和创建INI文件
- Happy Number 判断一个整数的各个位数的平方的和到最后是不是1
- ListView使用技巧
- 查看android源码的版本号
- Centos 7 防火墙firewall配置
- C++虚函数与虚函数表
- jedis
- oracle 的那些事儿
- Js-Html 前端系列--全选,反选
- Android开始写笔记
- Windows列表框类