我的xml文件中有两个ExpandableListViews
和一些TextViews
。当我展开第一个(在顶部)ExpandableListView
时,它会将所有内容压缩在一起,而第二个(在底部)ExpandableListView
只剩下非常少的空间。用户只能通过在很小的范围内滚动来查看第二个ExpandableListView
的内容。
我已经考虑过将其包裹在ScrollView
中,但我的ExpandableListViews
只显示第一组并且无法展开。此外,如果我将高度设置为静态数字并且所有组都已扩展,则无法再看到内容。
我希望ExpandableListViews
都可以扩展,我可以上下滚动布局,以便所有内容都有足够的空间。
有什么建议吗?
我的XML.File
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?attr/colorPrimary"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:text="Group1"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Attention1"
android:textStyle="bold"
android:textColor="@android:color/black"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="5dp"
android:paddingBottom="5dp" />
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/elv_theorie"
android:layout_gravity="center_horizontal"
android:groupIndicator="@android:color/transparent"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?attr/colorPrimary"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:text="Group2"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Attention2"
android:textStyle="bold"
android:textColor="@android:color/black"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"/>
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/elv_pruefung"
android:layout_gravity="center_horizontal"
android:groupIndicator="@android:color/transparent" />
</LinearLayout>
我的问题:
使用ScrollView
:仅显示第一个组且无法展开
答案 0 :(得分:0)
您应该使用此功能设置可扩展列表视图的动态高度
private void setListViewHeight(ExpandableListView listView,
int group) {
ExpandableListAdapter listAdapter = (ExpandableListAdapter) listView.getExpandableListAdapter();
int totalHeight = 0;
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(),
View.MeasureSpec.EXACTLY);
for (int i = 0; i < listAdapter.getGroupCount(); i++) {
View groupItem = listAdapter.getGroupView(i, false, null, listView);
groupItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight += groupItem.getMeasuredHeight();
if (((listView.isGroupExpanded(i)) && (i != group))
|| ((!listView.isGroupExpanded(i)) && (i == group))) {
for (int j = 0; j < listAdapter.getChildrenCount(i); j++) {
View listItem = listAdapter.getChildView(i, j, false, null,
listView);
listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
}
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
int height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getGroupCount() - 1));
if (height < 10)
height = 200;
params.height = height;
listView.setLayoutParams(params);
listView.requestLayout();
}