ExpandableListView onExpand始终将展开的组滚动到顶部

时间:2012-10-05 09:57:42

标签: android expandablelistview

我正在寻找扩展时将expandableListView组置于顶部的方法。 我试过onGroupExpand,或者在ExpandableListView的performItemClick中。

setSelectedPositionFromTop(int,int),partialy工作,但如果它在系统启动它自己的滚动时启动,则列表被过度滚动,并且组不在屏幕上。

对不起凌乱的描述,但很难说没有准确显示我需要的内容。

5 个答案:

答案 0 :(得分:5)

将transcriptmode更改为已禁用。

android:transcriptmode="disabled"

在可扩展列表布局中。

答案 1 :(得分:3)

将它放在您的适配器中:

public void onGroupExpanded(final int groupPosition) {
     super.onGroupExpanded(groupPosition);

     listView.setSelectedGroup(groupPosition);
}

答案 2 :(得分:1)

在onGroupExpand(int groupPosition)中尝试setSelection(groupPosition)。

答案 3 :(得分:1)

我尝试了很多解决方案,但下面的代码对我有用。希望这段代码对某些人有用。在onGroupExpand中实现OnGroupExpandListener 使用以下代码

public void onGroupExpand(final int groupPosition) {
    super.onGroupExpand(groupPosition);

    expandableListView.post(new Runnable() {

        @Override
        public void run() {
            expandableListView.setSelection(groupPosition);
            if(expandableListView.getChildAt(groupPosition)!=null)
            expandableListView.requestChildRectangleOnScreen(expandableListView.getChildAt(groupPosition),
                    new Rect(0, 0, expandableListView.getChildAt(groupPosition).getRight(), expandableListView.getChildAt(groupPosition).getHeight()), false);
        }
    });
}

答案 4 :(得分:-3)

我有解决这个问题的方法。它并不温和,但效果很好。 可展开的listView杂乱是应该按子号移动。看来,系统认为孩子与父母(组)的身高相同,所以如果你把不同大小的孩子放在一起会导致自动滚动列表出现问题。

我的解决方案是欺骗列表,认为它有更多的孩子。 如果我的孩子是小组的两倍,我只返回组有2个孩子的信息。现在,因为它是数据构造列表,我检查我的数据,是否有2个孩子的数据,或只有1,如果我没有第二个孩子的数据,我知道我可以把0高度视图作为第二子。

当我不得不用小组制作List而不是1个大孩子时,它工作得很好。

由于我的问题没有答案,我发布了这个问题,这可能有助于某人。