如何阻止Android ViewPager滚过某一点?

Kar*_*ela 1 android slidingdrawer android-fragments android-viewpager slidingmenu

我不确定我是否正确地接近这个问题,并希望从友好的SO社区获得一些建议.基本上,我希望得到一个效果,如从屏幕左侧出来的滑动菜单,但我希望菜单和主屏幕共享相同的背景.因此,当菜单出来时,它只是将主要内容推向右侧,但它们共享相同的背景.

我已经尝试使用ViewPager,将菜单放在位置0,主要内容放在位置1.它看起来很好,除了我不知道如何阻止ViewPager回到原来的位置或者完全转到下一页.我希望它大约停止一半.我尝试重写ViewPager的onTouch()方法,我可以识别视图被拖动的一半,但我不知道如何将其锁定到位.

有任何想法吗?

Kar*_*ela 5

经过一番挖掘,我想出了一种方法来做到这一点.对于您的寻呼机适配器,请扩展其中一个.就我而言,我扩展了FragmentStatePagerAdapter.然后,覆盖它的getPageWidth()方法并显式设置每个页面的宽度.

/**
 * This method should return a percentage of the measured screen width, booya
 *
 * @param position
 * @return
 */
@Override
public float getPageWidth(int position)
{
    switch (position)
    {
        case 0:
            return .33f;
        case 1:
            return 1;
        case 2:
            return .8f;
        default:
            return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,有3页.左边的页面是屏幕的1/3,中间的页面是全屏,右边的页面是屏幕的4/5.这给出了滑动菜单的效果,但具有共享背景.