粘贴horizo​​ntalScrollView并捕获触摸事件

时间:2013-10-07 20:33:26

标签: android listview horizontalscrollview

我正在尝试重现G + Android应用的个人资料屏幕。在此屏幕中,您可以注意到包含选项卡的horizo​​ntalScrollView,它位于屏幕顶部。

屏幕由列表组成,包含HeaderView(ImageBackground,头像,信息和标签)和列表(卡片)。

我能够使标签贴在顶部并捕捉触摸事件,但是当标题从顶部完全消失时,抛出效果不再起作用(< =>如果{{的第一个可见项目1}}不是标题)。我能够触摸并移动listview,它一直有效,直到我试图逃跑。

HorizontalScrollView

FLING OK

Fling OK:

FLING KO

这是我做的:

第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

正如您所看到的,它完全有效,直到标题视图完全消失。

2 个答案:

答案 0 :(得分:1)

几个月前我开发了这个流畅的UI(粘性标题视图)。 我没有任何关于flinging标头的问题,这是一个Horizo​​ntalScrollView

在我的github上查看:https://github.com/flavienlaurent/sandbox/blob/master/src/com/fourmob/sandbox/activities/StickyHeaderViewActivity.java

答案 1 :(得分:1)

我发了一篇关于HERE

的博客文章