2011-04-26 130 views
7

我想使用ListView制作一个类似聊天的视图,其中新消息出现在屏幕的底部(因此我使用android:stackFromBottom =“true”)我想添加一个标题到ListView中,它将出现在屏幕的顶部。当消息很少时,消息头和消息之间会有一个空的空间,当消息很多时,ListView将是可滚动的,并且消息头将被隐藏,当底部消息可见时(消息头将滚动其余的消息)。 问题是我不能告诉ListView让它的标题或项目填充屏幕上的剩余空间。 android:layout_height =“fill_parent”没有帮助。我可以使用RelativeLayout使标题静态,但我不想。有任何想法吗?Android ListView:填充屏幕上剩余空间的页眉/页脚

回答

0

为什么不把列表视图放在3行的表格布局中。将列表视图放在中间行,然后使用顶部和底部行作为页眉和页脚。

+0

什么马科斯说,将工作,但我更喜欢表格的布局。您可以将页眉和页脚设置为固定的高度(倾角),并根据所使用的设备允许列表视图缩小/增加高度。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2011-04-26 15:25:33

+0

和马科斯的回答一样。当真空空间被填满时,我真的需要这个Header和ListView一起滚动。我在iPhone上看到它,但还没有在Android上看过,所以我不知道是否可能。 – Elena 2011-04-27 09:18:17

0

垂直使用LinearLayout,顶部为标题,中间为ListView,layout_weight =“1”,然后为页脚。

一个解决方案,如果你希望头可以滚动。 是在您的适配器中膨胀位置1,您想要滚动的标题。

+0

但是,当我滚动ListView的头将保持可见。正如我所说的情况有点问题 - 我想在顶部,当没有足够的消息(和消息在底部)的头,但是当空间充满消息和ListView成为可滚动的,我想该标题与ListView一起滚动。 – Elena 2011-04-27 09:16:30

+0

嗯..这有点复杂。检查我的新答案。 – 2011-04-27 14:58:12

+0

谢谢你继续回答我!我仍然不知道如何将标题放在屏幕顶部(将其与屏幕顶部对齐),并在没有足够的内容填充ListView时将剩下的项目放在底部。在代码中进行一些硬核计算是可能的解决方案,但我正在寻找一种更智能的方法来实现它。 – Elena 2011-04-29 13:44:46

0

只是做一个不同的布局,如header_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:background="@drawable/listitem_background" 
    android:layout_marginLeft="4dip" android:layout_marginRight="4dip" 
    android:gravity="center_vertical|center_horizontal" 
> 

     <TextView android:id="@+id/nearByLabel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Load More Results" 
      android:textColor="#000" 
      android:textStyle="bold" 
      android:textSize="20sp" 
      /> 

</LinearLayout> 

而在你的活动添加它像

View headerView = inflater.inflate(R.layout.header_list, null); 
yourlistView.addHeaderView(headerView); 
+1

谢谢你的回答,但那不是问题。我现在解决的方法是将标题放在屏幕的顶部,并且当第一个列表项不再可见时用动画将其隐藏起来。 – Elena 2011-09-11 12:06:03