6

Tôi đang sử dụng ViewPager để có hiệu ứng trượt trong ứng dụng của mình.Xem trong chế độ xem máy nhắn tin chồng lên nhau giữa chế độ xem trước đó và tiếp theo

Tôi có pager.setPageMargin() để hiển thị chế độ xem tiếp theo và trước đó, tiếc là chế độ xem tiếp theo của tôi vượt quá chế độ xem hiện tại.

Dưới đây là mã của tôi

pager = (ViewPager) findViewById(R.id.myviewpager); 

    adapter = new MyPagerAdapter(this, this.getSupportFragmentManager()); 
    pager.setAdapter(adapter); 
    pager.setOnPageChangeListener(adapter); 



    // Set current item to the middle page so we can fling to both 
    // directions left and right 
    pager.setCurrentItem(FIRST_PAGE); 

    // Necessary or the pager will only have one extra page to show 
    // make this at least however many pages you can see 
    pager.setOffscreenPageLimit(10); 

    // Set margin for pages as a negative number, so a part of next and 
    // previous pages will be showed 

    // 
    pager.setPageMargin(-450); 

Tôi đang sử dụng mảnh trong máy nhắn tin. Tôi nhận được đầu ra như gắn liền với chủ đề này, nhưng cần phải xem là nơi đúng với ra trên vỗ

enter image description here

phần đánh dấu trong hình trên nên đi đằng sau thẻ trung tâm.

+0

bản sao có thể có của [Android ViewPager - Hiển thị bản xem trước của trang ở bên trái và bên phải] (http://stackoverflow.com/questions/10098040/android-viewpager-show-preview-of-page-on-left- và bên phải) –

+0

@BillyRiantono không trùng lặp, trong ảnh đính kèm nếu bạn thấy tôi là displayi ng thẻ tiếp theo, nhưng thẻ tiếp theo (được đánh dấu trong hình bầu dục) được phủ trên thẻ hiện tại (thẻ trung tâm) – Suresh

+0

Hi @ Suresh Bạn đã có giải pháp cho trường hợp của bạn? – phongvan

Trả lời

0

Hãy thử điều này:

pager.setClipToPadding(false); 
    pager.setPadding(50, 0, 50, 0); 

thay vì:

pager.setPageMargin(-450); 
+0

@Mila Azhar nó đã không làm việc ra – Suresh

+0

tôi đã thử với bringToFront() nhưng nó đã không làm việc ra – Suresh

0

Thật sự tôi đưa quan điểm cần thiết để phía trước

view.bringToFront(); 

Lưu ý: Muốn xác định được diện đúng là ở giữa trang hiển thị hiện tại của máy nhắn tin

+0

Bạn có thể vui lòng nói làm thế nào bạn xác định bố trí chính xác đó là ở trung tâm của máy nhắn tin xem? – Favolas

1
pager.setPadding(0, 0, 0, 0); 
pager.setPageMargin(0, 0, 0, 0); 

Bạn chỉ cần sử dụng match_parent cho chiều cao và chiều rộng của khung nhìn tks. hy vọng nó hữu ích cho bạn

0

Tôi đã tìm ra giải pháp cho phiên bản sau KitKat. Về cơ bản những gì tôi đã làm là tăng độ cao của chế độ xem trung tâm hiện tại. (Tôi vẫn đang làm việc cho pre-Lollipop giải pháp)

Dưới đây là mã của tôi, Đặt OnPageChangeListener để ViewPager của bạn, và trong OnPageSelected Phương pháp

 @Override public void onPageSelected(int position) { 

     //Counter for loop 
     int count = 0; 
     int PAGER_LOOP_THRESHOLD = 2; 
     if (position >= PAGER_LOOP_THRESHOLD) { 
     count = position - PAGER_LOOP_THRESHOLD; 
     } 
     do { 
     Fragment fragment = (Fragment) adapter.instantiateItem(pager, count); 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP 
      && fragment.getView() != null) { 

      //If it's current center position, increase view's elevation. Otherwise, we reduce elevation 
      if (count == position) { 
      fragment.getView().setElevation(8.0f); 
      } 
      else { 
      fragment.getView().setElevation(0.0f); 
      } 
     } 
     count++; 
     } while (count < position + PAGER_LOOP_THRESHOLD); 
    } 
0

kể từ khi bạn đang thiết pager.setPageMargin (-450); bạn cũng cần cung cấp 240 phần đệm cho đoạn con của ViewPage và pager.setClipToPadding (false); cho hoạt ảnh mượt mà.

nếu ai đó vẫn đang tìm kiếm giải pháp, tôi đã tùy chỉnh các ViewPage để đạt được nó mà không sử dụng biên độ tiêu cực, hãy tìm một dự án mẫu ở đây https://github.com/44kksharma/Android-ViewPager-Carousel-UI nó nên làm việc trong hầu hết các trường hợp, nhưng bạn vẫn có thể xác định lề trang với mPager.setPageMargin(margin in pixel);

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