我确信我错过了一些简单的实现方法,但是已经完成了我能想到的所有已知组合以获得我正在寻找的工作。当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>
爪哇
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);
到目前为止我尝试过的事情包括:
提前致谢!
答案 0 :(得分:16)
我希望那个footerView坐在 屏幕的底部。
这不是addFooterView()
的工作方式。
当ListView包含足够的项目来滚动屏幕时, footerView应该坐在最后 清单(不在底部) 屏幕)。
这也不是addFooterView()
的工作方式。
如果您希望它与列表一起滚动(即,如果三个列表项占据屏幕的上半部分,页脚就在这三个项目的正下方),则使用addFooterView()
...但是然后页脚总是滚动列表。
如果您希望它不滚动列表,一种方法是使用RelativeLayout
作为您的父级,将页脚锚定到屏幕底部,并让ListView
位于屏幕之间顶部和页脚......但页脚从不滚动。
答案 1 :(得分:3)
答案 2 :(得分:1)
你要做的事实上是相当复杂的。您希望“页脚”与列表一起滚动(有时至少),这意味着它需要包含在ListView布局中。但是你也(其他时候)想要相对于屏幕放置相同的页脚,或者更准确地说相对于ListView的某些父布局(或父级父级等),这意味着页脚不需要包含在ListView中。这两种情况需要相互排斥地放置相关元素。
但这不是SDK的设计上的糟糕设计。从您的描述看来,您可能会以错误的方式思考问题。从概念上讲,这个元素是否真的是一个页脚,如果它不总是在列表的“脚”,但有时一直在屏幕的底部?你可以通过组合ListViews,ScrollViews,RelativeLayouts和一些android:layout_height技巧来制作你想要的那种布局。然而,简单地采用替代方法来设计可能是一个更好的举措。
答案 3 :(得分:1)
同样如此
<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>
答案 4 :(得分:1)
这是我用来实现这种行为的边缘技巧。
基本上你将ListView
设置为wrap_content
,然后使用负边距将Button
放在ListView
底部边距空间中。
这使用固定高度,但你也可以在运行时测量按钮,并设置正负边距。
<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>