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. okhttp3 访问服务器失败 onFailure 提示CLEARTEXT communication
  2. android小功能实现之发送短信
  3. SwipeRefreshLayout+RecyclerView实现下拉刷新上拉加载功能
  4. Android(安卓)WebView使用全面解析(加载网络资源、本地HTML,JS交互
  5. Android日语输入法Simeji使用示例
  6. Android中的通知Notification
  7. android gradle多渠道打包配置
  8. AndroidStudio打包出现问题: `Error:Execution failed for task
  9. Android复选框(CheckBox)的现实

随机推荐

  1. SQL 超时解决方案 有时并不是设置问题
  2. 分页存储过程(三)在sqlserver中打造更加准
  3. 分页存储过程(二)在sqlserver中返回更加准
  4. SqlServer 执行计划及Sql查询优化初探
  5. SQLServer 使用ADSI执行分布式查询Active
  6. sqlserver 支持定位当前页,自定义排序的
  7. SQL Server 分页查询存储过程代码
  8. SQL 重复记录问题的处理方法小结
  9. SQL Server 服务由于登录失败而无法启动
  10. sql 取两值之间的数据方法(例:100-200之间