2013-04-25 30 views
8

Tôi đang sử dụng để hiển thị một vài đoạn, tôi cũng có TextView trên số FragmentActivity của mình. Tôi cần thay đổi văn bản trong TextView tùy thuộc vào phân đoạn nào hiện được chọn trong ViewPager. Vấn đề tôi gặp phải: ViewPager có một số cơ chế lưu vào bộ nhớ đệm, nó tạo ra các mảnh trước khi chúng thực sự hiển thị cho người dùng, ví dụ khi tôi chọn trang thứ hai trong trang ViewPager trên trang thứ ba cũng được tạo. Điều gì là nhiều hơn tôi không thể xác định bên trong mảnh là mảnh này có thể nhìn thấy ngay bây giờ hoặc nó chỉ được tạo ra bởi ViewPager, nhưng không thực sự có thể nhìn thấy cho người dùng. Tôi đã tryed để sử dụng OnPageChangeListener cho điều này, nhưng những thay đổi được thực hiện trong đó là không thể chấp nhận chậm đối với tôi (trang cuộn và sau đó tôi TextView đã thay đổi)

Những gì tôi thực sự cần: tôi cần phải xác định đoạn hiện nay có thể nhìn thấy trong ViewPager, bất kể từ số FragmentActivity hoặc từ số Fragment. Làm thế nào tôi có thể đạt được điều này?Xác định phân đoạn nào hiện có thể nhìn thấy trong ViewPager

Trả lời

7

ViewPager.OnPageChangeListener là cách tiếp cận rõ ràng ở đây. Và như bạn đã nhận thấy, onPageSelected(int position) không được gọi cho đến khi trang được căn giữa (nếu bạn đang từ từ cuộn trang bằng cách chạm và giữ).

Điều tôi thực sự cần: Tôi cần xác định phân đoạn nào hiện có thể nhìn thấy trong ViewPager, bất kể từ FragmentActivity hoặc từ Fragment. Làm thế nào tôi có thể đạt được điều này?

Trước tiên, bạn chưa xác định "hiện có thể nhìn thấy". Trong một ViewPager, 2 trang đều có thể được nhìn thấy trong khi vuốt giữa chúng, vì vậy trang nào là "đang hiển thị" giữa swipe? Giả định của tôi là bạn sẽ xem xét bất kỳ trang nào là "hiển thị nhiều hơn" là "hiện có thể nhìn thấy".

Có nói rằng, tôi sẽ xem xét sử dụng onPageScrolled (int position, float positionOffset, int positionOffsetPixels). Có vẻ như positionOffset có thể cung cấp cho bạn thông tin bạn cần. Tôi sẽ kiểm tra nó với một số báo cáo khai thác gỗ để xem dữ liệu nào trả về.

Các vấn đề liên quan