可扩展ListView将扩展组位置设置为第一个可见位置

时间:2014-10-04 12:24:49

标签: android expandablelistview

我有一个情况,我正在折叠所有组并只保持一个组打开。但是扩展后的群体不在视野范围内,我希望我的扩展群体始终是第一个可见的位置。

这是我为折叠所有观点所做的工作。

@Override
    public void onGroupExpanded(int groupPosition) {
        super.onGroupExpanded(groupPosition);
        ExpandableListView list=(ExpandableListView)mFragment.getmListCategories();
        int len = getGroupCount();
        for (int i = 0; i < len; i++) {
            if (i != groupPosition) {
                list.collapseGroup(i);
            }
        }

    }

我已经尝试过以下方法来保持扩展组的可见性

@Override
    public boolean onGroupClick(ExpandableListView parent, View v,
            int groupPosition, long id) {
        int h1 = mListCategories.getHeight();
        int h2 = v.getHeight();

//      mListCategories.smoothScrollToPositionFromTop(groupPosition, (h1/2)-(h2/2), 00);
//      mListCategories.setSelectionFromTop(groupPosition, 0);
        Config.debug("Scroll groupPosition "+groupPosition);

//      mListCategories.smoothScrollToPositionFromTop(0, v.getTop() - (v.getHeight() / 2) + (v.getHeight() / 2), 0);


        return false;
    }

它们都没有正常工作。任何帮助,将不胜感激。在此先感谢;-)

2 个答案:

答案 0 :(得分:0)

您可以在onGroupExpanded()方法中执行的操作,在折叠其他视图后,您可以获得要展开的视图的x和y坐标。然后,您可以调用ListView.setScroll(x,y)滚动到展开的视图。

答案 1 :(得分:0)

在ExpandableListView上设置 android:transcriptMode =&#34;禁用&#34;

<ExpandableListView
    android:id="@+id/expadableListView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:transcriptMode="disabled"
    android:fastScrollEnabled="true"
    android:groupIndicator="@null"
    />