我正在尝试在Android中实现展示手风琴类型行为的ExpandableListView(一次只能打开一个组)。在setOnGroupExpandListener中添加代码以在打开另一个组时折叠一个组非常简单(见下文)。
getExpandableListView().setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if (lastExpandedChapter != -1
&& groupPosition != lastExpandedChapter) {
getExpandableListView().collapseGroup(lastExpandedChapter);
}
lastExpandedChapter = groupPosition;
}
});
但是,我注意到这似乎混淆了ExpandableListView中的默认滚动逻辑。扩展组时,默认滚动将确保组的内容可见(根据需要向下滚动以查看它)。这基本上就是我想要的。
当我添加代码以在展开新组时自动折叠先前打开的组时,如果打开的组低于以编程方式关闭的组,则滚动会有点不稳定。列表视图滚动得太远了。如果我单击以关闭组,它工作正常,但当我在处理程序中以编程方式执行时,滚动关闭。
任何建议如何(A)更改自动折叠代码以使其不会混淆默认滚动或(B)以编程方式将列表视图的滚动调整到正确的位置?