我希望我的ExpandableListView
在用户展开组时自动滚动,以便展开的组标题位于屏幕顶部。我尝试过smoothScrollToPosition
,但这只是确保了展开的组在屏幕上的某处可见。我想显式地滚动它,以使展开的组位于顶部,如本例所示:
Before expanding Group 3: After expanding Group 3:
+=================+ +=================+
| Group 1 | | Group 3 |
+-----------------+ +-----------------+
| Group 2 | | Grp 3 Child 1 |
+-----------------+ +-----------------+
| Group 3 | | Grp 3 Child 2 |
+-----------------+ +-----------------+
| Group 4 | | Group 4 |
+=================+ +=================+
发布于 2012-10-07 03:25:56
ListView.setSelection(position)
这将滚动到所选项目,当您单击组项目时调用此选项。
发布于 2013-03-20 20:04:57
下面的代码是一个对我有效的解决方案
public boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) {
// TODO Auto-generated method stub
//mExpandableList.setSelectionFromTop(groupPosition, 0);
Boolean shouldExpand = (!mExpandableList.isGroupExpanded(groupPosition));
mExpandableList.collapseGroup(lastClickedPosition);
if (shouldExpand){
//generateExpandableList();
mExpandableList.expandGroup(groupPosition);
mExpandableList.setSelectionFromTop(groupPosition, 0);
}
lastClickedPosition = groupPosition;
return true;
}
发布于 2014-07-18 02:33:11
这对我很有效。将其放入您的适配器中:
public void onGroupExpanded(final int groupPosition) {
super.onGroupExpanded(groupPosition);
listView.setSelectedGroup(groupPosition);
}
https://stackoverflow.com/questions/12762958
复制相似问题