屏幕上的Android ViewPager中心项目

问题描述 投票:4回答:2

我正在尝试在屏幕上显示一个对话框。并且该对话框中应具有带有FragmentPagerAdapter的ViewPager。适配器中的每个项目的宽度均设置为.7f。对我来说重要的是,当选择某些项目时,应将其捕捉到ViewPager的中心,并显示下一个和上一个片段的一部分(正如图所示)。不幸的是,默认行为是向左对齐。

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

谢谢

((只要有人问:在那张图片上,ViewPager不会在对话框上伸展。实际上,对话框与父级的宽度匹配,并且布局方式看起来像这样)

“

android dialog android-viewpager fragment center
2个回答
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" />

ClipToPadding = false确保即使将片段放置在viewPager的内容区域之外,它们也将被绘制。

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

mViewPager.setPageMargin(100);

请注意,setPageMargin将像素数作为参数,而不是显示点数。您可能应该将某些dp值转换为像素,以在所有设备上具有正确的间距。此方法应该可以正常工作:

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

0
投票

我正面临着类似的问题,没有人试图以这种方式解决它,它可能不完全准确,但在视觉上居中。

使用DisplayMetrics获取设备高度尺寸,然后按如下所示为viewpager设置填充:

    int height = Resources.getSystem().getDisplayMetrics().heightPixels;

    pager.setPadding(0,height/6,0,0);

请注意,viewpager项的布局必须设置为“ wrap_content”,活动/片段高度中的viewpager必须为“ match_parent”。

在我的情况下,高度/ 6作为顶部填充使其看起来居中。试一试这个数字,以获得最佳效果。

© www.soinside.com 2019 - 2024. All rights reserved.