我正在尝试重现G + Android应用的个人资料屏幕。在此屏幕中,您可以注意到包含选项卡的horizontalScrollView,它位于屏幕顶部。
屏幕由列表组成,包含HeaderView(ImageBackground,头像,信息和标签)和列表(卡片)。
我能够使标签贴在顶部并捕捉触摸事件,但是当标题从顶部完全消失时,抛出效果不再起作用(< =>如果{{的第一个可见项目1}}不是标题)。我能够触摸并移动listview
,它一直有效,直到我试图逃跑。
HorizontalScrollView
Fling OK:
这是我做的:
第1步:子类Fling KO:
添加HorizontalScrollView
:
ScrollChangedListener
第二步:
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if(mOnScrollChangedListener != null) mOnScrollChangedListener.onScrollChanged(l, t, oldl, oldt);
}
第3步:平局
mViewToDraw.setOnScrollChangedListener(new MyHorizontalScrollView.OnScrollChangedListener() {
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt) {
mCurrentScrollX = l;
invalidate(0, 0, getWidth(), mViewToDraw.getMeasuredHeight());
}
});
第4步:捕捉触摸事件
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if (mViewToDraw == null) {
return;
}
canvas.translate(-mCurrentScrollX, 0);
mViewToDraw.draw(canvas);
}
我正在尝试不复制标签视图,因为我很确定我可以这样做。希望我很清楚。
编辑:我做了small video
正如您所看到的,它完全有效,直到标题视图完全消失。
答案 0 :(得分:1)
几个月前我开发了这个流畅的UI(粘性标题视图)。 我没有任何关于flinging标头的问题,这是一个HorizontalScrollView
答案 1 :(得分:1)
我发了一篇关于HERE
的博客文章