SwipeRefreshLayout图标不显示但回调有效

时间:2016-04-28 14:21:02

标签: android swiperefreshlayout

我有一个简单的布局:

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swiperefresh"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/result_list_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    >

        <include
            android:id="@+id/result_list"
            layout="@layout/result_list"/>

        <include layout="@layout/loading_animated_house"/>


    </FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>

当第一个include可见而第二个消失时,一切都很好。

当第一个include消失且第二个可见时,我看不到加载图片。

在刷新之前只拉动(加载图像的)超快速闪烁,但是当回调被调用时,操作确实会运行。

任何线索都会对你有帮助!

2 个答案:

答案 0 :(得分:0)

可以使用以下代码<include android:id="@+id/result_list" android:layout_width="match_parent" android:layout_height="match_parent" layout="@layout/result_list"/>

答案 1 :(得分:0)

在尝试了一些场景后,我注意到:

1)onInterceptTouchEvent永远不会返回true,mIsBeingDragged永远不会真正设置为true,因此以后onTouchEvent moveSpinner永远不会被调用。

2)onTouchEvent调用MotionEvent.ACTION_UP,然后调用finishSpinner,这就是我收到回调的原因。

3)在我对响应或错误执行网络呼叫后,我致电swiperefresh.setRefreshing(false);,这就是为什么我在结束时闪烁(startScaleDownAnimation)。

因此,确定您需要一个可触摸的孩子来开始拖拽,

解决方法可能只是设置FrameLayout可点击:

    <FrameLayout
    android:id="@+id/result_list_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
>