我有一个ListView,占屏幕高度的30%到100%(可以滚动)。我希望这个ListView的最后一个元素具有尽可能多的可用高度。此外 - 当没有其他项目时 - 它仍然必须是可见的
实施例: 如果ListView(没有最后一个元素)占用屏幕的30%,那么最后一个元素应该占据屏幕的70%。
如果ListView占用100%(并且你必须向下滚动),那么最后一个元素应该具有与其他项目一样多的高度。
我该如何实现这种行为?
答案 0 :(得分:3)
我认为这不是ListView
的默认行为,我不确定你是否可以做你的建议(至少不容易)。
ListView
的常见行为是将其维度分布到其布局中定义的维度。这意味着行将具有最小的高度/宽度,但之后将启用滚动并且项目的高度将相等。
您可能尝试实现此目的的一种方法是扩展ArrayAdapter
(从您的问题来看,如果您已经在做,并不清楚),并在{{1}中实施该行为方法。
getView()
没有ArrayAdapter
方法,因此您需要以某种方式跟踪列表中的最后一项:保留要显示的项目的副本或者只是定义一个公共方法,该方法将从您的getLastItem()
或Activity
调用,告诉他们它是最后一项,并在您的Fragment
方法中执行以下操作:< / p>
getView()
要知道布局留下的空间,您可以获得显示高度并减去@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
// convertView references to the current row being rendered
if (convertView == myLastItem)
convertView.setHeight(myLastRowsHeight);
...
}
的高度减去最后一行减去您可能拥有的任何其他ListView
的高度。相同的布局。
View