【发布时间】:2016-05-12 09:14:45
【问题描述】:
我正在开发一个带有左侧滑动菜单的 Android 应用,其中包含一些 LinearLayout 和中间的 ExpandableListview,就像这张图片一样
ExpandableListview 的子视图下面包含一个TextView 和一个ListView,ListView 的可见性默认是没有的。当点击TextView时,ListView将可见。
问题是当点击ExpandableListview 的父视图时,列表的高度也会扩大以包裹它的内容。但是当点击子视图(也是TextView)时,list'height 不会改变,我必须向下滚动才能看到最后一项。
为了在 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);
}
问题截图
请帮我解决这个问题,我需要列表来包装它的内容。
提前致谢。
【问题讨论】:
标签: android android-layout listview expandablelistview