Пролистнуть часть страницы с помощью пейджера

У меня есть ViewPager с PagerTabStrip , при переходе со страницы на другую и пейджер, и вкладка будут перемещаться вместе. (как гугл пэй)

Это работает нормально. теперь все страницы имеют общие данные, и одна часть будет меняться при прокрутке, поэтому я не хочу пролистывать всю страницу, а только область, которая изменится.

Как вы можете видеть на следующем изображении, при пролистывании страниц будет задействована только красная область, зеленая область не будет перемещаться.

Я много искал, но я не могу найти ничего полезного, любая помощь будет оценена.

код просмотра пейджера:

<android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <android.support.v4.view.PagerTabStrip
                android:id="@+id/pager_title_strip"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:background="#FFFFFF"
                android:textColor="#003366"
                android:paddingTop="4dp"
                android:paddingBottom="4dp"/>
    </android.support.v4.view.ViewPager>

person IBRA    schedule 14.02.2013    source источник
comment
Пользователь сможет проводить пальцем влево/вправо только при пролистывании красной зоны содержимого (в области, которая фактически изменяется)?   -  person user    schedule 17.02.2013
comment
@Luksprog да, только красная область, если пользователь проведет пальцем по зеленой области, никаких изменений не произойдет.   -  person IBRA    schedule 17.02.2013


Ответы (2)


Использование swipeyTabs является ответом. Проблема при использовании PagerTabStrip заключается в том, что PagerTabStrip будет находиться внутри тега ViewPager, см. следующий код:

<android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <android.support.v4.view.PagerTabStrip
                android:id="@+id/pager_title_strip"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:background="#FFFFFF"
                android:textColor="#003366"
                android:paddingTop="4dp"
                android:paddingBottom="4dp"/>
    </android.support.v4.view.ViewPager>

так что вы не можете отделить их друг от друга. но при использовании SwipeyTabs каждый тег будет отдельной частью, см. следующий код:

<net.peterkuterna.android.apps.swipeytabs.SwipeyTabs
        android:id="@+id/swipeytabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        swipeytabs:bottomBarColor="#ff96aa39"
        swipeytabs:bottomBarHeight="2dip"
        swipeytabs:tabIndicatorHeight="3dip"
        android:background="#ff3b3b3b"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="1" />

В этом случае вы можете настроить макет по своему усмотрению, рассматривая ViewPager и SwipeyTabs как две части.

В вашем случае, я думаю, вы можете поместить SwipeyTabs и ViewPager в красное положение, как на изображении, а в зеленых областях вам нужно просто настроить их по своему усмотрению.

Я нашел эти ссылки, которые могут вам помочь. Удачи с этим.

person Seem    schedule 18.02.2013

Отказ от ответственности: я неправильно прочитал ваш пост. Отделение ViewPager от PagerTabStrip может не сработать или может потребоваться другой подход. Я оставлю ответ здесь, если это может помочь в любом случае.

Вы можете добиться этого, встроив ViewPager в отдельный фрагмент и поместив под ним другой независимый фрагмент, который не контролируется ViewPager.

По сути, ваша основная активность состоит из двух фрагментов: один содержит ViewPager (который содержит больше фрагментов), другой содержит фиксированное представление.

Чтобы сделать это правильно, требуется поддержка вложенных фрагментов, которая доступна только в Android 4.2 или иным образом в последней библиотеке поддержки (редакция 11).

Имейте в виду, что при создании адаптера для ViewPager вам необходимо использовать FragmentManager, возвращаемый getChildFragmentManager().

person sstn    schedule 14.02.2013
comment
приложение должно работать на 2.3.3 и выше. но я собираюсь попробовать то, что вы предлагаете. и спасибо за вашу помощь. - person IBRA; 14.02.2013
comment
@IbrahimSwaiss Android 2.3.3 не должен вызывать проблем с библиотекой поддержки. Разделенный макет (разделенный PagerTabStrip) может быть сложным. - person sstn; 14.02.2013
comment
спасибо за вашу помощь, даже если ваш ответ не решил проблему, я думаю, что он приведет меня к хорошему решению, и еще раз спасибо :) - person IBRA; 14.02.2013