【问题标题】:Android ViewPager center item on screen屏幕上的 Android ViewPager 中心项目
【发布时间】:2015-05-01 06:20:27
【问题描述】:

我正在尝试在我的屏幕上显示一个对话框。并且该对话框中应该有 ViewPager 和 FragmentPagerAdapter。适配器中的每个项目的宽度都设置为 0.7f。 What is important to me is that when some item is selected it should be snapped to center of the ViewPager with parts of next and previous fragments visible (exactly as image shows).不幸的是,默认行为是向左对齐。

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

谢谢

(如果有人问:在那张图片上,ViewPager 没有在对话框上拉伸。实际上,对话框与父级的宽度相匹配,并且布局方式如此,所以看起来不像)

【问题讨论】:

    标签: android dialog android-viewpager fragment center


    【解决方案1】:

    以防万一有人在寻找相同的东西,我已经找到了解决方案: 只需将左右填充设置为 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);
    }
    

    【讨论】:

    • 添加一些代码示例会很好。此外,如果您标记此答案,那么它肯定会对社区有所帮助 - 此问题不会因为未解决而进入问题列表。
    • 感谢您告诉我 :) 我已经按照您的建议完成了
    【解决方案2】:

    我遇到了类似的问题,没有人试图以这种方式解决它,它可能不完全准确,但在视觉上看起来居中。

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

        int height = Resources.getSystem().getDisplayMetrics().heightPixels;
    
        pager.setPadding(0,height/6,0,0);
    

    注意viewpager的item的布局必须设置为“wrap_content”,并且viewpager在activity/fragment的高度必须是“match_parent”。

    在我的例子中,作为顶部填充的 height/6 使它看起来居中。尝试使用此数字以获得最佳结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多