我有一个包含许多EditView字段的表单。这些字段的数据从数据库加载(在onCreate()方法中)。屏幕上的最后一个对象应该是一个ListView,它应该显示正在显示的记录的所有相关数据记录。所有数据都正确加载,并且适配器似乎正常工作。它加载正确的数据,它将数据正确格式化为适配器使用的.xml指定的两行布局。
问题是屏幕上的ListView“缩小”以仅显示一个项目,如果有更多项目则添加滚动条。我希望ListView扩展大小以显示所有记录,并且屏幕本身是可滚动的(所有内容都包含在ScrollView中)。
所以,XML看起来像这样:
<ScrollView
android:layout_height="wrap_content"
android:id="@+id/ScrollView1">
<RelativeLayout
android:layout_height="wrap_content"
android:id="@+id/RelativeLayout1">
<EditView
android:id="@+id/EditView1>
</EditView>
<ListView
android:id="@+id/ListView1
android:layout_height="wrap_content"
android:layout_below="@id/EditView1>
android:divider="#b5b5b5"
android:dividerHeight="1dp" />
然后我使用自定义BaseAdapter将数据填充到ListView
中listView = (ListView) findViewById(R.id.ListView1);
dbRecords = db.getAllRecordsByRecordId(recordId);
CBA_Records adapter = new CBA_Records(this, dbRecords);
listView.setAdapter(adapter);
这是我以前做过的所有事情,除了这些都包含在scrollview中。原因是可能有更多的字段,而不是适合较小的屏幕(或水平屏幕),因此屏幕必须是可滚动的。而且,列表视图也必须在那里......
有什么建议吗?
答案 0 :(得分:2)
更多关于invertigo说的话。 1}} ListView
内不建议使用ScrollView
。
将ListView
设为根,并将其宽度和高度设置为"match_parent"
。将位于ListView
(标题)之上的其他内容放在单独的xml中。然后为标题膨胀新的xml文件,使用addHeaderView()
方法将其作为标题添加到ListView
(看起来您希望所有内容都滚动)。
答案 1 :(得分:0)
ListView会自动垂直滚动,因此您现在有两个垂直滚动区域,您希望使用滚动事件吗?将ListView设置为静态高度(不推荐),或设计布局,以便只有要滚动的区域(即ListView)具有滚动功能并删除ScrollView。还要将基本布局(在本例中为RelativeLayout)设置为height=match-parent
,并将ListView height=0dp weight=1
设置为阻止ListView“缩小”。
或者,如果您不希望ListView单独滚动,请查看此解决方案:android listview display all available items without scroll with static header