我注意到,在玩弄它时,如果您在 Google+ Android 应用程序的流中上下滚动,滚动条的大小会根据当前可见帖子的垂直大小而改变。例如,如果您滚动到长帖子,该栏会缩小,如果您滚动到短帖子,它会变长。这是如何实施的?
现在,我并不特别需要这个功能,但这只是激起了我的好奇心。
我注意到,在玩弄它时,如果您在 Google+ Android 应用程序的流中上下滚动,滚动条的大小会根据当前可见帖子的垂直大小而改变。例如,如果您滚动到长帖子,该栏会缩小,如果您滚动到短帖子,它会变长。这是如何实施的?
现在,我并不特别需要这个功能,但这只是激起了我的好奇心。
这是使用回收的副作用ListView
。当滚动查看新帖子时,其余项目被虚拟化 - 基本上,Android 会猜测列表的其余部分将占用多少空间,但它实际上并没有呈现它们,因此无法确定。当您滚动到一个大帖子时,它假定列表的其余部分中有大帖子,因此列表更长。
您可以使用如下convertView
参数获得相同的功能getView
:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = null;
if(convertView == null)
{
view = // set your view here
}
else
{
view = convertView
}
// set all your properties on the view here.
return view;
}