Android ListView:将最后一个列表项对齐到屏幕顶部

时间:2013-07-17 17:04:39

标签: android android-listview

我将listview的stackFromBottom XML属性设置为true,因此当活动打开时,listview中的最后一项是可见的而不是顶部项,默认情况下也是如此。

但是,我希望活动打开,以便列表视图中的最后一项与屏幕顶部对齐。换句话说,最后一个项目下方应该有一个空白区域占用剩余空间。

我试图通过在列表视图中添加页脚视图来实现此目的:

View footer = inflater.inflate(R.layout.empty_view, listview, false);
ViewGroup.LayoutParams lp = footer.getLayoutParams();
lp.height = ???;
footer.setLayoutParams(lp);
listview.addFooterView(footer);

问题是我在活动的onCreate函数期间不知道分配给空白页脚视图的高度。我需要知道列表视图中最后一项的高度,以决定制作空白页脚视图的高度,但最后一个列表视图项的高度不是固定数字。

如何获得最后一个listview项目的高度?或者也许有一种更好的方法可以完全做到这一点?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一个解决这个问题的非常简单的方法:只需将ListView包装在FrameLayout中。显然,对齐的处理方式与其他ViewGroup的处理方式不同。

这是我的工作代码:

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:stackFromBottom="true" />
</FrameLayout>

另一种方法是删除android:stackFromBottom并手动滚动以模拟属性的行为。这样可以节省额外的图层,但我不建议添加额外的复杂性。