Android的ListView页脚视图不被放置在屏幕的底部

我敢肯定,我错过了一些简单的实现,但已经通过每个已知的组合,我可以想出我想要做的工作。 当ListView项不填充页面时,我试图让ListView页脚坐在屏幕的底部。

例如,我有一个ListView的三个项目和一个FooterView页面(使用ListView的addFooterView),我希望footerView坐在屏幕的底部。 当ListView包含足够的项目来滚动屏幕时,footerView应位于列表的末尾(而不是在屏幕的底部)。

下面列出了我尝试使用的XML。 任何和所有的帮助,非常感谢!

Layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@+drawable/background"> <ListView android:id="@+id/menu" android:layout_width="fill_parent" android:layout_height="fill_parent" android:listSelector="@android:color/transparent" android:divider="@null"> </ListView></RelativeLayout> 

ListViewRow.xml

 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" style="@style/Nationwide.menu"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/nav_item" style="@style/Nationwide.menu.row"> <ImageView android:id="@+id/image_icon" style="@style/Nationwide.menu.leftIcon" /> <TextView android:id="@+id/nav_text" style="@style/Nationwide.menu.text" /> <ImageView android:id="@+id/chevron_symbol" style="@style/Nationwide.menu.rightIcon" /> </LinearLayout> <View android:layout_height="1dp" android:background="@drawable/nav_item_divider_dark" /> <View android:layout_height="1dp" android:background="@drawable/nav_item_divider_light" /></LinearLayout> 

ListViewFooter.xml

 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/footer" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentBottom="true"> <View android:id="@+id/footer_image" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentBottom="true" /></RelativeLayout> 

Java的

  LayoutInflater inflater = this.getLayoutInflater(); View footerView = inflater.inflate(R.layout.footer, null); footerView.findViewById(R.id.footer_image).setBackgroundDrawable(resources.getDrawable(R.drawable.cone_footer)); mMenuListView.addFooterView(footerView); 

到目前为止我尝试过的东西包括:

  • 如上所示添加页脚视图
  • 在ListView中添加可绘制资源作为背景(由于9-Patch可伸缩区域的原因,这导致ListView不能跨越屏幕的整个宽度并以奇怪的方式滚动)
  • 将“cone_footer”添加为“布局”中的单独视图

提前致谢!

Solutions Collecting From Web of "Android的ListView页脚视图不被放置在屏幕的底部"

我想要footerView坐在屏幕的底部。

这不是addFooterView()工作方式。

当ListView包含足够的项目来滚动屏幕时,footerView应位于列表的末尾(而不是在屏幕的底部)。

这也不是addFooterView()工作方式。

如果你希望它滚动列表(即,如果三个列表项占用屏幕的上半部分,页脚是正确的三个项目下面),然后使用addFooterView() …但后来页脚总是滚动与清单。

如果你不希望它滚动列表,一种方法是使用RelativeLayout作为你的父母,锚定你的页脚到屏幕的底部,并让ListView坐在顶部和页脚之间…但是然后页脚从不滚动。

如果别人正在寻找类似的答案,这是我最终做的解决我所遇到的问题。 由于我希望添加的“页脚”仅仅是一个图像来填充屏幕上的一些空间(因为当视图很短时),并且ListView方法实际上并不是我需要的,所以我们结束了这个作为我们的XML布局:

  <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.example.android.apis" style="@style/company.mainContainer"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <!-- enter page content here --> <View android:layout_height="0px" android:layout_weight="1" android:visibility="invisible" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:scaleType="fitXY" android:src="@drawable/footer_cone"> </ImageView> </LinearLayout> </ScrollView> 

希望这可以帮助别人!

你想要做的事实际上是相当复杂的。 你希望“页脚”滚动列表(有时至less),这意味着它需要包含在ListView布局。 但是,你也有(其他时间)想要相对于屏幕放置相同的页脚,或者更精确地说,相对于ListView的某些父页面(或父 – 母等),这意味着页脚不需要被包含在ListView中。 这两种情况需要相互排斥所涉及的元素。

尽pipe如此,SDK的部分devise也不错。 从你的描述看来,你可能是在错误地思考这个问题。 这个元素是否真的是一个页脚,从概念上讲,如果它并不总是在列表的“脚下”,但有时候一直在屏幕的底部? 你可能能够通过组合ListViews,ScrollViews,RelativeLayouts和一些android:layout_height技巧来制作你想要的布局。 然而,简单地采取一种替代方法来devise,这可能是一个更好的举措。

像这样

 <RelativeLayout> <include android:id="@+id/header" layout="@layout/header" android:layout_width="fill_parent" android:layout_alignParentTop="true" /> <include android:id="@+id/footer" layout="@layout/footer" android:layout_width="fill_parent" android:layout_alignParentBottom="true" /> <ListView android:layout_below="@id/header" android:layout_above="@id/footer"/> </RelativeLayout> 

这是我用来实现这一行为的保证金。

基本上你将ListView设置为wrap_content ,然后使用负边距将Button放置在ListView底部边距空间中。

这使用固定的高度,但是您也可以在运行时测量button,并设置正负边距。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/list_item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="50dp" android:layout_alignParentTop="true" /> <Button android:layout_width="fill_parent" android:layout_height="50dp" android:layout_below="@+id/list_item" android:paddingBottom="@dimen/margin" android:layout_topMargin="-50dp" android:paddingTop="@dimen/margin" android:text="@string/add" /> </RelativeLayout>