将来自回收商的触摸事件传递给其父级LinearLayout

时间:2017-12-27 16:30:46

标签: java android android-layout animation android-recyclerview

我有这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="cntxt">


<LinearLayout
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <!-- Title -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:gravity="center"
        android:padding="20dp"
        android:text="@string/title"
        android:textColor="@android:color/white"
        android:textSize="17sp" />

        <!-- Recycler -->
        <CustomRecyclerView
            android:id="@+id/main_activity_rv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:scrollingCache="false" />
</LinearLayout>

当布局滚动到顶部时,当用户使用手指进行类似“刷卡刷新”的移动时,我需要在Y轴上进行平移动画。换句话说,如果回收器在顶部,我需要跟随整个回收器的手指移动。

我尝试将onTouch侦听器附加到回收器,但回收器的内部滚动条件使情况不明确。 有什么想法来实现这个动画吗?

如果我将onTouchListener附加到main_layout并从iner文本视图执行操作,则动画将正常播放。但当我触摸回收器时没有任何反应(除了回收器的内部卷轴) 提前谢谢。

1 个答案:

答案 0 :(得分:0)

将最外面的图层设为

SwipeRefreshLayout 

而不是相对布局。这将为您提供任何方式的刷新功能。

另请注意,在提到的滑动布局下,只能有一个直接的子视图,因此您放置的内容...确保将其置于您拥有的线性布局中。

您可以附加一个OnRefreshListener来监听刷新布局的拉动。