Android ViewPager中心项目在屏幕上

bak*_*kua 4 android dialog center fragment android-viewpager

我想在屏幕上显示一个对话框.该对话框应该在FragmentPagerAdapter中包含ViewPager.适配器中的每个项目的宽度设置为.7f.对我来说重要的是,当选择某个项目时,它应该被捕捉到ViewPager的中心,其中下一个和前一个片段的部分可见(正如图像所示).不幸的是,默认行为是左侧的捕捉.

请问有什么方法可以实现吗?

谢谢

(正如有人问:在那张照片上,ViewPager没有延伸到对话框.实际上,对话框与父级的宽度相匹配,并且布局方式看起来不像它)

屏幕

bak*_*kua 14

为了防止有人在寻找相同的东西,我来解决方案:只需将左右填充设置为ViewPager,然后将clipToPadding设置为false.这将导致一个片段居中并且片段中的邻居片段在图片中.然后在片段之间添加空格使用viewPager.setPageMargin(); 在代码中.

而已 :)

编辑://

这是一些示例代码

<android.support.v4.view.ViewPager
 android:id="@+id/viewPager"
 android:clipToPadding="false"
 android:paddingLeft="40dp"
 android:paddingRight="40dp"
 android:layout_width="match_parent"
 android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

ClipToPadding = false可确保即使片段位于viewPager的内容区域之外也会绘制片段.

然后在代码中添加viewPager项目之间的空格:

mViewPager.setPageMargin(100);
Run Code Online (Sandbox Code Playgroud)

请注意,setPageMargin将像素数作为参数,而不是显示点数.你可能应该将一些dp值转换为像素,以便在所有设备上保持正确的间距.这种方法应该工作正常:

public static float dipToPixels(Context context, float dipValue) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
}
Run Code Online (Sandbox Code Playgroud)