自己封装的base里事件,解决冲突 @Override protected void initEvent() { //解决滑动冲突 homeList.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_DOWN) { // 记录点击到mKChartView时候,手指的X坐标 mLastX = event.getX(); } if (action == MotionEvent.ACTION_MOVE) { // 超过x值, 让scrollview休息会 if (Math.abs(event.getX() - mLastX) > 60f) { scrollview.requestDisallowInterceptTouchEvent(true); } } if (action == MotionEvent.ACTION_UP) { // 手势抬起,恢复scrollview 状态 scrollview.requestDisallowInterceptTouchEvent(false); } return false; } }); }
动态计算设置listview高度(适用于scrollView嵌套listView):
public void setListViewHeight(ListView listView) { //获取listView的adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; //listAdapter.getCount()返回数据项的数目 for (int i = 0, len = listAdapter.getCount(); i < len; i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }