2013-02-04 22 views
31

Tôi muốn tắt tất cả hoạt ảnh cho các chuyển đổi trong tùy chỉnh ViewPager. Máy nhắn tin chế độ xem này chứa bốn tab và mỗi tab tải một Fragment - và những gì máy nhắn tin xem là chuyển đổi các tab: ví dụ: tab đầu tiên là chỉ mục, thứ hai là bản đồ, v.v.Tắt hoạt ảnh trong ViewPager

Vấn đề là nếu , là tab đầu tiên được chọn, tôi nhấp vào tab thứ tư, tôi có thể thấy cách ViewPager đi qua tab thứ hai và thứ ba và dừng lại ở vị trí thứ tư và tôi không muốn điều đó xảy ra.

Tôi đã cố vô hiệu hóa tất cả hoạt ảnh này setAnimation thành null mỗi khi người dùng chọn tab mới được hiển thị nhưng vẫn không hoạt động.

Bất kỳ ý tưởng nào để đạt được điều này, vui lòng? Cảm ơn rất nhiều trước!

EDIT: Tôi cũng đã cố gắng để ghi đè onCreateAnimation cho mỗi Fragment nhưng vẫn không làm việc

+0

Bạn có nghĩa là bạn cũng muốn xóa khả năng cử chỉ vuốt, tôi hiểu. Nếu vậy, hãy thử tạo một dự án mới cho 4.0 + trong Eclipse, nó sẽ cho phép bạn tạo một dự án trống với cả tab có thể vuốt và không thể vuốt được, kiểm tra sự khác biệt, đó là cách nhanh nhất và bạn có thể thấy nhiều mã. – MariusBudin

+0

tốt, thực sự chúng tôi không thể vuốt ngang ngay bây giờ, vì cliente không thích nó, vì vậy tôi chỉ muốn xóa các hình động (swiping đã bị tắt) – noloman

Trả lời

102

Cuối cùng tôi phát hiện ra: vấn đề này có thể được giải quyết bằng cách chỉ gọi mViewPager.setCurrentItem(position) với một tham số phụ để false, đó là cuộn mịn cho số ViewPager. Sau này, di chuyển sẽ được thực hiện mà không có bất kỳ làm mịn và do đó các hình ảnh động sẽ không được nhìn thấy.

+0

Nơi để đặt mã này? Nó dường như không hoạt động – JayVDiyk

+3

@JayVDiyk Ví dụ. on Button Click gọi nó như sau: 'mViewPager.setCurrentItem (vị trí, sai); ' – vovahost

+0

Bất cứ ai làm điều này cũng có thể quan tâm đến điều này: http://stackoverflow.com/a/13437997/3075340 – Micro

30

Đây là một giải pháp:

  • Subclass các ViewPager (tùy chỉnh của bạn ViewPager)
  • Override các setCurrentItem hai phương pháp

Đoạn Mã:

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

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

Bằng cách đặt smoothScroll đến false, bạn đang tắt hoạt ảnh cuộn.