我正在尝试在Android活动中显示数据列表。通常任何人都会使用我之前多次使用的简单ListView来做到这一点。但是现在我有一个带有固定页眉和页脚的应用程序,中间部分(内容)在页眉和页脚下方滚动。在中间部分,我想在数据列表的上方和下方添加其他组件,但整个部分必须是可滚动的。我尝试将组件(如按钮,textview等)添加到listview中,但Eclipse中的布局构建器不允许我这样做。
所以我开始使用ScrollView,您可以轻松添加任何您喜欢的组件。但我不允许将ListView添加到ScrollView,我可以理解,因为它会产生奇怪的效果(因为它们都可以滚动)。
接下来我想使用TableLayout来动态添加TableRows,但是在多个网站上,据说它很慢并且“不是这样做的”。我也找不到一种优雅的方法来在每个项目之间添加分隔符。使用ListView可以非常轻松地完成。
以下图片最多可以解释我想要的效果:http://tinyurl.com/bvkec5d
带有“表格数据”标题的表格可能包含很多项目,因此可能会变得非常大。我不想要的是该表具有固定大小,并且该项在该表中可滚动。我实际上希望表的大小增加,因此包含表的ScrollView也应该增长。我还希望表格上方的信息框能够滚动(与之后可能添加的任何其他组件一样)。
实现这种效果的最佳方法是什么?
答案 0 :(得分:0)
您可以使用包含静态页眉和页脚的简单垂直LinearLayout(或RelativeLayout),并在它们之间使用ListView。您可以在ListView上设置页眉和页脚视图,以添加可滚动的页眉和页脚内容。为了简化示例,这里是LinearLayout方式:
<LinearLayout android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">
<!--static header content... can be any kind of view-->
<TextView
android:layout_width="match_parent"
android:layout_weight="0"
android:layout_height="wrap_content"/>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--static footer content... can be any kind of view-->
<TextView
android:layout_width="match_parent"
android:layout_weight="0"
android:layout_height="wrap_content"/>
</LinearLayout>
在代码中,您可以说:
ListView theList = (ListView)findViewById(R.id.list);
// example of creating header and footer views from inflation or by instantiation in code
View myHeaderView = getLayoutInflater().inflate(R.layout.myHeaderLayout,theList,false);
View myFooterView = new TextView(this, some layout params);
theList.addHeaderView(myHeaderView);
theList.addFooterView(myFooterView);
ListView.addHeaderView和ListView.addFooterView应该允许您将其他静态视图(其内容可以动态更新)添加到ListView的顶部或底部:
public void addHeaderView (View v)
自:API级别1添加固定视图以显示在列表顶部。 如果多次调用addHeaderView,则会显示视图 他们被添加的顺序。使用此调用添加的视图可以成为焦点 如果他们想要的话。
注意:在调用setAdapter之前调用它。这是ListView可以的 将提供的光标包装为也会占用标头的光标 和页脚的观点。