android - 带有 setPadding() 的 ViewPager 用于水平滑动卡片效果 - 切断 PagerTabStrip 标题

标签 android android-viewpager width padding pagertabstrip

我在 ViewPager 上使用 setPadding() 来实现刷卡效果,效果很好,但是当我将填充应用于 ViewPager (60, 0, 60, 0) 时,PagerTabStrip 的宽度明显变小,现在我在标题和屏幕的两个边缘之间有 60dp 的间隙(如下图所示)。

我试图使用 SetMinimumWidth() 以编程方式增加 PagerTabStrip 的宽度(缺乏更好的解决方案),但它没有任何区别。

如何克服由 setPadding() 引起的截断标题和 60dp 间隙? 谢谢!

我使用的代码:

 pager = (ViewPager) v.findViewById(R.id.pager);
            pager.setAdapter(new CardsPagerAdapter(getActivity(), cardImages, cardTitles, cardDescription));

            pager.setPadding(50, 0, 50, 0);
            pager.setClipToPadding(false);
            pager.setPageMargin(20);

            WindowManager wm = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
            Display display = wm.getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);

            pagerStrip = (PagerTabStrip) v.findViewById(R.id.pager_tab_strip);
            pagerStrip.setMinimumWidth(size.x);

xml:

<android.support.v4.view.ViewPager
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/pager"
            android:layout_width="fill_parent"
            android:layout_height="390dp"
            android:layout_below="@+id/homeTopIv"
            android:layout_marginTop="-85dp">


            <android.support.v4.view.PagerTabStrip
                android:id="@+id/pager_tab_strip"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:background="@android:color/transparent"
                android:textAppearance="@style/PagerTabStripText"
                android:paddingTop="5dp"
                android:paddingBottom="14dp"/>

        </android.support.v4.view.ViewPager>

enter image description here

最佳答案

经过两天的搜索,我终于找到了比我想象的更简单的解决方案。希望能帮助其他想要为他们的 Android 应用程序提供漂亮的刷卡布局的人。我所要做的就是将这些行添加到 ViewPager 和 PagerTitleStrip xml:

android:clipChildren="false"
android:clipToPadding="false"

最终代码:

  <android.support.v4.view.ViewPager
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/pager"
            android:layout_below="@+id/imageCont"
            android:layout_above="@+id/bottomIndContainer"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:clipToPadding="false"
            android:clipChildren="false"
            android:layout_marginTop="-85dp">


            <android.support.v4.view.PagerTabStrip
                android:id="@+id/pager_tab_strip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:background="@android:color/transparent"
                android:textAppearance="@style/PagerTabStripText"
                android:paddingTop="5dp"
                android:clipChildren="false"
                android:clipToPadding="false"
                android:paddingBottom="14dp"/>

        </android.support.v4.view.ViewPager>

关于android - 带有 setPadding() 的 ViewPager 用于水平滑动卡片效果 - 切断 PagerTabStrip 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31628787/

相关文章:

java - ListView 中的字符串样式,Android Dev

android - 在 tabLayout 中设置 Icon 会抛出空指针异常

javascript - 表格未扩展到 100%

Android Datepicker 文本颜色更改不起作用

android - fragment getView().findViewById(R.id.box1) 返回 null

android - 使用电子邮件中的链接启动 Android 应用程序

android - IllegalStateException - ViewPager 中的 removeView()

android - 确定哪个 fragment 当前在 ViewPager 中可见

android - 将一个 TextView 彼此对齐 - Android

css - 如何将动态 div 锚定到屏幕?