2013-02-04 59 views
31

我想禁用我的自定義ViewPager中的所有轉場動畫。 此視圖尋呼機包含四個選項卡-and每個標籤加載Fragment - 和什麼視圖尋呼機確實是切換選項卡:例如第一個選項卡是索引,第二個是地圖等在ViewPager中禁用動畫

的問題是,如果,作爲第一個選項卡,我點擊第四個選項卡,我可以看到ViewPager是如何通過第二個和第三個選項卡並在第四個選項卡上停止的,我不希望發生這種情況。

每次用戶選擇要顯示的新選項卡時,我都試圖禁用此ViewPager試圖使用setAnimationnull的所有動畫,但它仍不起作用。

有什麼想法可以達到這個目的嗎? 非常感謝!

編輯:我也試着重寫onCreateAnimation每個Fragment,但仍然沒有工作

+0

你的意思是你想刪除滑動手勢功能,我明白了。如果是這樣,嘗試在Eclipse中爲4.0 +創建一個新項目,它將允許您創建一個空的項目,其中包含可滑動和不可滑動的選項卡,檢查差異,這是最快的方式,您可以看到很多代碼。 – MariusBudin

+0

好吧,其實我們現在不能水平滑動,因爲客戶不喜歡它,所以我只想刪除動畫(已經禁用了滑動) – noloman

回答

102

我終於找到了:這個問題可以通過只使用一個額外的參數false,這是平滑滾動調用mViewPager.setCurrentItem(position)來解決爲ViewPager。 之後,滾動將完成沒有任何平滑,因此動畫將不會被看到。

+0

在哪裏可以放這段代碼?它似乎不起作用 – JayVDiyk

+3

@JayVDiyk示例。在按鈕單擊調用它是這樣的:'mViewPager.setCurrentItem(position,false);' – vovahost

+0

任何人這樣做也可能會對此感興趣:http://stackoverflow.com/a/13437997/3075340 – Micro

30

這裏的另一種解決方案:

  • 子類ViewPager(自定義ViewPager
  • 覆蓋兩個setCurrentItem方法

代碼段:

@Override 
public void setCurrentItem(int item, boolean smoothScroll) { 
    super.setCurrentItem(item, false); 
} 

@Override 
public void setCurrentItem(int item) { 
    super.setCurrentItem(item, false); 
} 

通過設置smoothScrollfalse,您正在禁用滾動動畫。