这是我的代码,它只给我一个ListView
,如果我将height
ListView
设置为wrap_content
或match_parent
。但是,如果我根据dp
定义高度,它会开始向我展示ListView
。但在这种情况下看起来不太好。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="ListView1"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:layout_marginTop="45dp"
android:textColor="@color/white"
android:textStyle="bold" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lv_upcoming"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:divider="@null" />
<View
android:layout_width="fill_parent"
android:layout_height="0.5dp"
android:background="#ffffff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="List Number 2"
android:gravity="center_vertical"
android:textColor="@color/white"
android:fontFamily="sans-serif-condensed"
android:textSize="18sp"
android:id="@+id/tvPrevious"
android:paddingLeft="16dp"
android:paddingRight="16dp" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_view_2"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:divider="@null"/>
</LinearLayout>
</ScrollView>
请指导我如何在布局中添加多个ListView
。
答案 0 :(得分:1)
始终建议在单个布局文件中使用单个ListView
。但是,是的,可能会出现一些需要适合两个列表的情况。因此,在这种情况下,我建议将两个列表合并到一个ArrayList
中,以便可以在单个ListView
中显示。
现在还有其他方法可以在布局中显示多个ListView
。尝试使用NestedScrollView
代替ScrollView
。
如果您考虑使用RecyclerView
here's an implementation在同一RecyclerView
中显示多个列表。您可以在code section中找到该项目,维基也有详细记录。
答案 1 :(得分:0)
将ListView放入FrameLayout并将layout_weight设置为1。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="ListView1"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:layout_marginTop="45dp"
android:textStyle="bold"
android:textColor="@color/white"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv_upcoming"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:divider="@null"
/>
</FrameLayout>
<View
android:layout_width="fill_parent"
android:layout_height="0.5dp"
android:background="#ffffff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="List Number 2"
android:gravity="center_vertical"
android:fontFamily="sans-serif-condensed"
android:textSize="18sp"
android:id="@+id/tvPrevious"
android:paddingLeft="16dp"
android:textColor="@color/white"
android:paddingRight="16dp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_view_2"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:divider="@null"
/>
</FrameLayout>
</LinearLayout>
答案 2 :(得分:0)
在scroll-view下使用list-view不是一个好习惯,如果你想使用它也是一个好习惯。然后你必须记住滚动视图下的列表视图不能正常工作,你必须以编程方式管理列表视图的高度。在列表视图上设置适配器时,您将遇到此问题。我在下面的链接中给出了相同的解决方案: -
Android ListView rows in ScrollView not fully displayed - clipped
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}