4

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

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

很抱歉描述混乱,但如果不准确说明我需要什么就很难说。

4

5 回答 5

5

将转录模式更改为禁用。

android:transcriptmode="disabled"

在可扩展的列表布局中。

于 2013-09-13T10:38:18.077 回答
3

把它放在你的适配器中:

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

     listView.setSelectedGroup(groupPosition);
}
于 2014-07-17T20:33:45.153 回答
1

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

于 2012-11-06T08:45:27.180 回答
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);
        }
    });
}
于 2015-03-24T12:04:48.923 回答
-4

我有解决这个问题的办法。这不是一个温和的,但它工作得很好。可扩展的 listView 问题是它应该按子编号移动。看来,该系统认为孩子与父母(组)的高度相同,因此如果您放置不同大小的孩子,则会导致自动滚动列表出现问题。

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

当我必须与小组一起制作列表时,它工作得很好,而不是与 1 个大孩子一起制作。

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

于 2012-10-31T13:36:43.277 回答