滑动控件与ScrollView冲突就是因为ScrollView截断点击事件
例如:我的自定义横向滑动控件与ScrollView冲突,应用View的事件分发机制可以,我的解决如下
lvHorizon.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { //允许ScrollView截断点击事件,ScrollView可滑动 scrollView.requestDisallowInterceptTouchEvent(false); } else { //不允许ScrollView截断点击事件,点击事件由子View处理 scrollView.requestDisallowInterceptTouchEvent(true); } return false; } });
你只需将lvHorizion,scrollView替换成你的滑动控件即可。
自定义滑动控件,请移步http://download.csdn.net/detail/m18860232520/9705252
如同ListView一样使用。
高度控制可以用 以下方法解决
public static void setListViewHeight(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }