2014-12-19 46 views
2

我已經在我的ListView上實現了一個SwipeRefreshLayout,它正在工作,但不是我想要的。我如何讓SwipeRefreshLayout在我舉手之前不觸發,並顯示「刷新刷新文本」

首先,刷新之前觸發我的手指,這不正確,因爲它將內容移回到頂部,即使我的手指仍然坐在向下滑動的位置。此外,觸發的距離非常短,文檔setDistanceToTriggerSync由於某些原因無法使用。

第二,我希望在列表視圖被拉下時顯示在間隙中的某種視圖,如告訴用戶「向下刷新刷新」的文本或動畫(如跳舞的幽靈在快速聊天中)。如何設置由此看來

這裏就是我有

<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/dashboardRootLayout" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 

> 

    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/lvDashboard" 
     android:background="#ffffff" 
     /> 

回答

1

爲什麼不是setDistanceToTriggerSync可用?

無論如何,SwipeRefreshLayout的默認行爲沒有額外的視圖,它只是一個特殊的進度條和一個監聽器,用於刷新和顯示或不顯示刷新進度。它也可以通過刷新消息改變操作欄的外觀。

可能的解決方案:

如果你想要我的頭,我能想到具有列表的頂部的獨特視角,被搬進了動畫和創建或將顯示您希望顯示在視圖SwipeRefreshLayout的頂部。

SwipeRefreshLayout swipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.dashboardRootLayout); 
    swipeRefreshLayout.setOnRefreshListener(new OnRefreshListener() 
     { 
     @Override 
     public void onRefresh() 
      { 
      // do animation 
      // set the view you want to show VISIBLE 
      } 
     }); 

其實你可以不SwipeRefreshLayout實現這一切的自己,因爲你不想要的默認行爲。 }

+0

謝謝@tiago,但我最大的擔憂是,事實上,清單之前我刷新我的手指從屏幕刷新。 – Siavash

+0

也,我不知道爲什麼setDistanceToTriggerSync不可用。它存在於API文檔中,但在我的代碼中,該方法不存在。就好像谷歌把它拿出來一樣,但是爲了更新文檔,反之亦然。但它不會顯示與autoComplete,如果我手動鍵入它,我得到一個符號未解決的錯誤。我查看了SwipeRefreshLayout的源代碼,該方法不在那裏。該包是android.support.v4.widget。 – Siavash

+0

看看這則:http://stackoverflow.com/questions/22856754/how-to-adjust-the-swipe-down-distance-in-swiperefreshlayout 沒有公共的方法來改變距離觸發,所以你必須在接受的答案中解釋了這一點。 – mobilepotato7