android ListView开发问题及方法
2015-08-03 20:29
465 查看
今天工作时,想起一个问题,就是每次遇到的问题可以收集起来,多看几遍,就没问题了,故此,在这里收集自己工作或学习中的问题及其解决方法,现在是listview遇见的问题,后面慢慢添加,有更多的方法和简洁请回复
1.ListView和GridView滑动到顶部和底部时出现的阴影消除方法:
android2.3以前用android:fadingEdge="none"
android2.3以后用setOverScrollMode(View.OVER_SCROLL_NEVER) ,
android:overScrollMode="never"
2.ListView布局更新问题
ListView.requestLayout();
3.ListView Item在垂直方向滑动居中显示
代码如下:
1.ListView和GridView滑动到顶部和底部时出现的阴影消除方法:
android2.3以前用android:fadingEdge="none"
android2.3以后用setOverScrollMode(View.OVER_SCROLL_NEVER) ,
android:overScrollMode="never"
2.ListView布局更新问题
ListView.requestLayout();
3.ListView Item在垂直方向滑动居中显示
代码如下:
private int ITEM_HEIGHT=80; private int mPostion=-1; private int autoScroll=0; Runnable autoRunnable=new Runnable() { @Override public void run() { mListView.smoothScrollBy(autoScroll, 300); } }; //listview 滑动监听 OnScrollListener mListViewScrollListener=new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView listview, int scrollState) { mHandler.removeCallbacks(autoRunnable); if(scrollState==0){ View cureentView = mNotificationItemAdapter.getConvertView(); if(cureentView!=null){ int top = cureentView.getTop(); autoScroll=top-mPostion; mHandler.postDelayed(autoRunnable, 50); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int scrollY = getScrollToY(); if (mNotificationItemAdapter != null) { for (int i = 0; i < mNotificationItemAdapter.getCount(); i++) { if (scrollY >= i * ITEM_HEIGHT && scrollY < (i + 1) * ITEM_HEIGHT - ITEM_HEIGHT / 2) { if (mPostion == i) {// 避免同一个位置不停动画 return; } mNotificationItemAdapter.setSelectPostion(i); mPostion = i; break; } else if (scrollY >= i * ITEM_HEIGHT && scrollY < (i + 1) * ITEM_HEIGHT) { if (mPostion == i + 1) {// 避免同一个位置不停动画 return; } mNotificationItemAdapter.setSelectPostion(i + 1); mPostion = i + 1; } } } } }; //获取滑动的y位置 public int getScrollToY() { View c = mListView.getChildAt(0); if (c == null) { return 0; } int firstVisiblePosition = mListView.getFirstVisiblePosition(); int top = c.getTop(); int headerHeight = 0; return -top + firstVisiblePosition * c.getHeight() + headerHeight; }
相关文章推荐
- Android 文件操作
- Android OpenGL ES 2.0之混合与雾的学习
- Android的多项选择设计
- Android 跳转基础应用(联系人,日历)
- <转载>Android 工程报错解决 Unable to resolve target 'android-17'
- Android showmap
- Android Api Demos登顶之路(十七)Redirection
- android-support-v7包的添加
- javafx 运行在android上遇到的难题-完美解决
- Android ViewFlipper用法浅析
- Android视频播放之VideoView
- Android 毛玻璃效果
- Android环境搭建
- Android 旋转动画,停止和持续旋转
- MAC OS ANDROID环境搭建
- android中如何实现mvc,用MVC进行重构
- Android Handler消息处理顺序分析
- Android Handler消息处理顺序分析
- Android Handler消息处理顺序分析
- Android procrank