2013.03.19(7)———android scrollview和listview共存的问题
16lz
2022-04-06
2013.03.19(7)———android scrollview和listview共存的问题
ScrollView嵌套GridView或者是ListView时,就会莫名其妙的出现问题,这里 我总结一下 我遇到的问题 总共有两个
1、listview显示不完整
参考:http://www.2cto.com/kf/201204/127363.html
这个可以自定义一下listview,如下
这样 listview 就可以完整显示了
2、listview滚动加载失效
一般我写listview滚动加载 ,都是利用onScrollChange这个函数,如下
然后
但是 当ListView在Scrollview里面的时候 这个就不管用了 ,为了解决这个问题,我们可以监听scrollview滚动到底部的事件 然后 来加载listview数据
参考:http://gundumw100.iteye.com/blog/1164066
如下所示代码
ScrollView嵌套GridView或者是ListView时,就会莫名其妙的出现问题,这里 我总结一下 我遇到的问题 总共有两个
1、listview显示不完整
参考:http://www.2cto.com/kf/201204/127363.html
这个可以自定义一下listview,如下
public class MyListView extends ListView { public MyListView(Context context) { super(context); } public MyListView(Context context, android.util.AttributeSet attrs) { super(context, attrs); } public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }}
这样 listview 就可以完整显示了
2、listview滚动加载失效
一般我写listview滚动加载 ,都是利用onScrollChange这个函数,如下
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState == OnScrollListener.SCROLL_STATE_IDLE){ if(view.getLastVisiblePosition()==(view.getCount()-1)){ this.loadData(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { }
然后
mLst.setOnScrollListener(this);
但是 当ListView在Scrollview里面的时候 这个就不管用了 ,为了解决这个问题,我们可以监听scrollview滚动到底部的事件 然后 来加载listview数据
参考:http://gundumw100.iteye.com/blog/1164066
如下所示代码
mScl.setOnTouchListener(this);@Overridepublic boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_UP: mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SCROLL_BOTTOM), 200); break; default: break; } return false;}//handlerprivate Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(_dialog!=null && _dialog.isShowing()){ _dialog.dismiss(); } switch(msg.what){ case MSG_SCROLL_BOTTOM: if (mLayRoot.getHeight() <= mScl.getScrollY() + mScl.getHeight()) {//判断是否触底 System.out.println("on bottom!"); if(mIndexStart==0){ if(mArrComment.size() >= (mIndexShow-1) * DBOpenHelper.PAGE_COUNT){ mPrg.setVisibility(View.VISIBLE); new Thread(new LoadCommentThread()).start(); } } } break; } } };
更多相关文章
- okhttp3 访问服务器失败 onFailure 提示CLEARTEXT communication
- android小功能实现之发送短信
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉加载功能
- Android(安卓)WebView使用全面解析(加载网络资源、本地HTML,JS交互
- Android日语输入法Simeji使用示例
- Android中的通知Notification
- android gradle多渠道打包配置
- AndroidStudio打包出现问题: `Error:Execution failed for task
- Android复选框(CheckBox)的现实