具有上一页和下一页边界的ViewPager

Gau*_*ora 139 android viewflipper android-viewpager viewanimator

我正在设计一个包含多个页面的视图.我希望上一页和下一页的边缘显示如下,并实现双指滑动以在页面之间切换.

在此输入图像描述

我尝试使用这里ViewPager建议的负页边距,但只显示屏幕上的一个边,而不是同时显示.

或者,有什么方法可以将我的视图的一部分放在屏幕外,然后设置它的动画,给它一个ViewPager类型效果.

我该怎么办呢?谢谢 !

Tho*_* R. 100

我有一个类似的解决方案:

在viewpager上设置左右填充,例如20dp.还要在viewpager上设置页边距,例如寻呼机填充的一半.并且不要忘记禁用剪辑填充.

tilePager.setPadding(defaultGap, 0, defaultGap, 0);
tilePager.setClipToPadding(false);
tilePager.setPageMargin(halfGap);
Run Code Online (Sandbox Code Playgroud)

  • 提供好的解决方案 (2认同)

Com*_*are 98

关于这个主题的博客文章中引用自己的话:

第三种方法来自Dave Smith,他是备受好评的Android Recipes一书的合着者.他走向了一个非常不同的方向,使用一个自定义容器,禁止儿童剪辑,一次显示多个页面.

发布的示例代码显示了整个行动.他的容器(com.example.pagercontainer.PagerContainer)包裹ViewPager并调用setClipChildren(false);自身,因此即使ViewPager聚焦在一个选定的页面上,其他具有超出ViewPager边界坐标的页面仍然可见,只要它们适合于PagerContainer.通过将尺寸调整ViewPager为小于PagerContainer,ViewPager可以将其页面尺寸调整到该尺寸,从而为其他页面留出空间.PagerContainer但是,需要帮助触摸事件,因为它ViewPager只会处理其自身可见边界上的滑动事件,忽略侧面可见的任何页面.

在此输入图像描述

  • @Shruti - 只需添加具有所需效果的叠加图像 (2认同)
  • 我这样做但它禁用了最后一项的过度滚动效果.有什么线索吗? (2认同)
  • @Swayam:我不知道. (2认同)

Ser*_*eyA 75

  1. 为整个项目视图设置左右填充.示例xml(page_item.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"/>
    
    <TextView
        android:id="@+id/text1"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    
    </LinearLayout>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后将负页边距设置为PageView等于2*(上一个视图填充)

    int margin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20*2,     getResources().getDisplayMetrics());
    mViewPager.setPageMargin(-margin);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 可选的.为第一项设置零左填充,为右项填充为最后一项以隐藏空边.您可以在PageAdapterPagefragment类中执行此操作.

  • 只需添加一个注释:当您从第1页滑到第2页时,使用此解决方案,页面3不在内存中,因此会出现延迟.解决这个问题只需添加 - yourViewPager.setOffscreenPageLimit(2); (12认同)
  • 如何触摸第一个和最后一个项目?通过检查OnPageListener中的页面索引? (2认同)

mol*_*008 44

要显示左右页面的预览,请设置以下两个值

viewpager.setClipToPadding(false)
viewpager.setPadding(left,0,right,0)
Run Code Online (Sandbox Code Playgroud)

如果在viewpager中需要两个页面之间的空格,则添加viewpager.setPageMargin(int)

Android ViewPager - 在左侧和右侧显示页面预览

  • 这应该是正确答案.我想也许这在以前版本的viewpager中没有用,但现在可以正常工作了. (3认同)
  • 简短而明确的答案。 (2认同)

44k*_*rma 8

如果有人仍在寻找解决方案,我已经定制了ViewPage来实现它而不使用负边距,在这里找到一个示例项目https://github.com/44kksharma/Android-ViewPager-Carousel-UI 它应该适用于大多数情况但你仍然可以定义页边距 mPager.setPageMargin(margin in pixel);