ScrollView内的Android ExpandableListView不会展开全高

时间:2016-05-12 09:14:45

标签: android android-layout listview expandablelistview

我正在开发一款Android应用,左侧幻灯片菜单中间包含一些LinearLayoutExpandableListview,如此图片

enter image description here

ExpandableListview的子视图包含TextViewListView,ListView的可见性默认不见了。点击TextView后,ListView即可显示。

问题是当点击ExpandableListview的父视图时,列表的高度也会扩展以包装它的内容。但是当点击子视图(也是TextView)时,列表的高度不会改变,我必须向下滚动才能看到最后一项。

要在ScrollView中设置ExpandableListview的高度,我使用了以下代码:

public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        // pre-condition
        return;
    }

    int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        if(listItem instanceof SecondLevelExpandableListView)
            Log.e("abc", "SecondLevelExpandableListView");
        if (listItem instanceof ViewGroup) {
            Log.e("abc", "ViewGroup");
            listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        }
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
}

问题的屏幕截图

enter image description here

请帮我解决这个问题,我需要列表总是包装它的内容。

提前致谢。

2 个答案:

答案 0 :(得分:0)

扩展动画结束时, 叫这个:

listView.smoothScrollTo(x,y);

你可以在屏幕上看到listView.getScrollY - maxY找到y

答案 1 :(得分:0)

export DJANGO_SETTINGS_MODULE="foo.settings.development"