ViewPager с setPadding() для горизонтального эффекта Swipe Cards - обрезать заголовки PagerTabStrip

Я использую setPadding () на моем ViewPager для достижения эффекта перелистывания карт, который работает нормально, но когда я применяю заполнение к ViewPager (60, 0, 60, 0), ширина PagerTabStrip становится явно меньше, и теперь я получаю Разрыв в 60dp между заголовками и обоими краями экрана (как на картинке ниже).

Я пытался увеличить ширину PagerTabStrip программно (в отсутствие лучшего решения), используя SetMinimumWidth(), но это не имеет никакого значения.

Как я могу преодолеть обрезанные заголовки и разрыв в 60dp, вызванный setPadding()? Спасибо!

код, который я использую:

 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>

1 ответ

Решение

Наконец, после двух дней поиска я нашел решение, которое проще, чем я думал. Надеюсь помочь другим, желающим получить приятный макет карты Swipe для своего приложения для Android. Все, что мне нужно было сделать, это добавить эти строки, как в ViewPager, так и в PagerTitleStrip xml:

андроид:clipChildren="ложь"
андроид:clipToPadding="ложь"

окончательный код:

  <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>
Другие вопросы по тегам