0

我有一个包含许多 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);

这和我之前做过的都是一样的,除了这些都包裹在滚动视图中。这样做的原因是可能有比较小屏幕(或水平屏幕)容纳的更多字段,因此屏幕必须是可滚动的。而且,列表视图也必须在那里......

有什么建议么?

4

2 回答 2

2

更多关于 invertigo 所说的内容。不推荐ListView在a里面。ScrollView

做你ListView的根,并将它的宽度和高度设置为"match_parent". 将ListView(标题)上方的其他内容放在单独的xml中。然后为标题添加新的 xml 文件,使用该addHeaderView()方法将其作为标题添加到ListView(看起来您希望所有内容都滚动)。

于 2013-05-28T20:03:14.140 回答
0

ListView 是自动垂直滚动的,所以你现在有两个垂直滚动区域,你希望哪个消费滚动事件?将您的 ListView 设置为静态高度(不推荐),或者设计您的布局,以便只有您想要滚动的区域(即 ListView)具有滚动功能并删除 ScrollView。还要设置您的基本布局,在本例中为 RelativeLayout、toheight=match-parent和 ListView height=0dp weight=1,以防止 ListView “缩小”。

或者,如果您不希望 ListView 独立滚动,请查看此解决方案:android listview display all available items without scroll with static header

于 2013-05-28T19:57:41.933 回答