2013.03.19(7)———android scrollview和listview共存的问题


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;        }    }    };






更多相关文章

  1. Android ListView嵌套Button,Button事件覆盖item事件解决办法
  2. Android WebView使用全面解析(加载网络资源、本地HTML,JS交互)
  3. Android:BaseMultiItemQuickAdapter打造嵌套/多级列表
  4. Android volley框架加载网络图片
  5. Android scrollview嵌套listview 滑动事件冲突的解决方法
  6. android: MapView加载多个 overlay 内存溢出
  7. Android 图片加载总结帖

随机推荐

  1. 怎么去掉联系人、通话记录、拨号列表界面
  2. Android系统下如何在程序中对XML里面元素
  3. Android(安卓)读取资源文件实例详解
  4. APK_获取Android的APK包签名信息
  5. Android(安卓)屏幕设置
  6. Android开源图表库介绍
  7. android启动后根文件系统分析
  8. 利用Handler来更新android的UI
  9. Android通过ContentProvider传输文件
  10. Android(安卓)Spinner与setDropDownViewR