我有一个像这样的Android布局:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/headingView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:paddingTop="@dimen/value_5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_below="@+id/relativeLayout1"
android:layout_centerHorizontal="true"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:visibility="gone" />
<LinearLayout
android:id="@+id/list_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/mt_gray_color"
android:fadeScrollbars="false" >
<TextView
android:id="@+id/itemHeading"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textStyle="bold"
android:background="#f2f2f2"
android:layout_marginTop="15dp"
android:visibility="gone"/>
<ListView
android:id="@+id/mylist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/value_5dp"
android:minHeight="500dp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
我在加载此页面/片段后在ListView中动态加载数据。
listview包含多个元素,我期待它会在listview中显示列表,而不是滚动,因为我已将其设为WRAP_CONTENT。
我可能有错误的理解以及我想要理解的内容并找到一个解决方案,我怎样才能避免滚动条并且列表视图中列出的所有项目都没有滚动。
提前致谢。
答案 0 :(得分:0)
您可以在运行时计算ListView
的所有子项的大小,然后将其高度设置为所有子项的总高度。您可以使用此方法:
public void justifyListView(ListView listView) {
ListAdapter adapter = listView.getAdapter();
if (adapter == null) {
return;
}
ViewGroup vg = listView;
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, vg);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams par = listView.getLayoutParams();
par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
listView.setLayoutParams(par);
listView.requestLayout();
}
答案 1 :(得分:0)
您可以在数据更改时更改listView的高度。