Вы не можете отключить автопрокрутку расширяемого списка, однако вы можете использовать некоторые приемы для достижения этой цели.
Вы можете использовать метод requestDisallowInterceptTouchEvent, чтобы отключить прокрутку расширяемого списка. этого будет недостаточно. Если вы не хотите автоматически прокручивать exp при расширении, вы должны рассчитать высоту дочерних элементов, затем установить новые макеты параметров для exp и обновить представление прокрутки.
boolean dispatchMode=false;
expandableListView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
v.getParent().requestDisallowInterceptTouchEvent(dispatchMode);
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(dispatchMode);
break;
case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(dispatchMode);
break;
}
// Handle ListView touch events.
v.onTouchEvent(event);
return true;
}
});
@Override
public void onGroupExpand(int groupPosition) {
LinearLayout.LayoutParams param = (LinearLayout.LayoutParams) expandableListView.getLayoutParams();
// param.height = (expandableListView.getChildCount() *
// expandableListView.getHeight());
int childrenCount = leftAttributeAdapter.getChildrenCount(groupPosition);
param.height += leftAttributeAdapter.getChildrenCount(groupPosition) * expandableListView.getChildAt(0).getHeight();
if (childrenCount > 2 && childrenCount < 10) {
param.height += 50 * 2;
} else if (childrenCount > 10)
param.height += 50 * childrenCount;
toast("Expandingggg Children count:" + leftAttributeAdapter.getChildrenCount(groupPosition) + " and Parameter heigh:" + param.height);
expandableListView.setLayoutParams(param);
expandableListView.refreshDrawableState();
scrollView1.refreshDrawableState();
}
});
expandableListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Toast.makeText(getActivity(), " Child Clicked***" + this.toString(), Toast.LENGTH_SHORT).show();
return false;
}
});
expandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(getActivity(), " Collapsed***" + this.toString(), Toast.LENGTH_SHORT).show();
LinearLayout.LayoutParams param = (LinearLayout.LayoutParams) expandableListView.getLayoutParams();
int childrenCount = leftAttributeAdapter.getChildrenCount(groupPosition);
param.height -= leftAttributeAdapter.getChildrenCount(groupPosition) * expandableListView.getChildAt(0).getHeight();
if (childrenCount > 2 && childrenCount < 10) {
param.height -= 30;
} else if (childrenCount > 10)
param.height -= 120;
expandableListView.setLayoutParams(param);
expandableListView.refreshDrawableState();
scrollView1.refreshDrawableState();
}
});