在其中包含回收站视图时,可折叠工具栏不会正确折叠

sta*_*ner 5 android

我有一个collapsableToolBar布局.Tolbar内的图像是折叠和滑动但是回收器视图中的项目没有折叠,它们只保留在它们的位置.我希望它们移动到顶部并折叠.

   <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:animateLayoutChanges="true"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/collapps_bar"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            >
            <View
                android:id="@+id/image"
                android:layout_width="fill_parent"
                android:layout_height="200dp"
                app:layout_collapseMode="parallax"
                android:background="@android:color/transparent"
                />
            <include layout="@layout/toolbar" />
            <android.support.v7.widget.RecyclerView
                android:layout_width="match_parent"
                android:id="@+id/recyClerView"
                app:layout_collapseMode="parallax"
                android:layout_height="wrap_content"
                android:layout_marginTop="100dp"
                android:orientation="horizontal" />
        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

Jac*_*aco 0

我不知道你是否成功做到了这一点,但我会建议你如果没有做到的话该怎么做。

首先,将 更改fill_parentmatch_parent因为 fill_parent 从 API 级别 8 开始已弃用。

正如 Nikoloz Akhvlediani 在他的回答中所说addOnItemTouchListener,您可以使用回收器视图的方法recyClerView,然后调用onInterceptTouchEvent来获取触摸事件并requestDisallowInterceptTouchEvent禁止回收器视图中的触摸事件并获得所需的滚动。

例如,在onCreate()方法上,您可以添加以下代码

recyClerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { // Listen to all actions
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            int action = e.getAction();
            switch (action) {
                case MotionEvent.ACTION_MOVE: // If you get some movement from a mouse, pen, finger or trackball
                    rv.getParent().requestDisallowInterceptTouchEvent(true);
                    break;
            }
            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {

        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)