我见过一些现代的Android和iOS应用程序,页面顶部会有一个覆盖整个屏幕宽度的图像。在它下面,会有一个ListView
一直延伸到页面。
当您开始向下滚动ListView
时,ListView
本身会开始向上移动,直到它到达屏幕顶部,即完全覆盖顶部屏幕。
执行此操作的应用示例包括: Google 播放 商店,赫芬顿 发布, YouTube 。
我试过谷歌搜索,但没有设法找到相关来源。
答案 0 :(得分:2)
这是一种视觉上的诡计,似乎图像和列表是一个但它们实际上不是。
基本上你有一个listview,其headerview与图像大小相同,在listview下面你有你的图像,所以当你滚动它时,listview会滚动图像。
布局看起来像这样
<RelativeLayout>
<ImageView></ImageView>
<ListView></ListView>
</RelativeLayout>
为标题创建另一个布局,该标题为空白,具有imageview的大小
您还可以在列表滚动时在Y方向上翻译图像,但是您必须在班级中全局保留视图,以便使用v.setTranslateY()
进行翻译
答案 1 :(得分:0)
您需要在列表视图中添加标题。你可以这样做:
final View header = LayoutInflater.from(getActivity()).inflate(R.layout.myheader, null);
((ListView) getActivity().findViewById(R.id.list)).addHeader(header);
然后你可以这样做:
((ListView) getActivity().findViewById(R.id.list)).setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (v.getChildCount() > 0 && v.getChildAt(0) != null)
header.setTranslationY(Math.round(-v.getChildAt(0).getTop() * 0.5));
}
});
此处header
是列表视图的标题