做项目时用到一个ScrollView包含一个ViewPager的情况,整理了一下:
由于scrollview和ViewPager和listView的touch事件有冲突的情况,自定义View的话比较麻烦,我们可以直接设置ListView的高度和ViewPager的高度这样就不会出现冲突的情况了。
/**
* <p>
* 关键代码 </br> 固定ListView和ViewPager的高度
* </p>
*
* @param listview
*/
public void resetHeight(ListView listview) {
ListAdapter listAdapter = listview.getAdapter();
if (listAdapter == null) {
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);
((MainActivity) getActivity()).setVpLp(params.height);
}
上图: