У меня есть ViewPager
внутри Activity
, который показывает два Fragments
.Стоп-прокрутка для CollapsingToolbarLayout при показе фрагмента
Деятельность имеет TabLayout
и CollapsingToolbarLayout
. CollapsingToolbarLayout
вложен в AppBarLayout
с помощью ImageView
для создания эффекта параллакса. TabLayout
находится за пределами AppBarLayout
внутри LinearLayout
с ViewPager
. Затем есть FrameLayout
, а также показать еще Fragment
по ViewPager
, когда пользователь нажимает кнопку, чтобы показать, что Fragment
.
Проблема заключается в том, что при прокрутке RecyclerView
внутри Fragment
, который накладывается поверх ViewPager
Activity
также прокручивается и делает эффект параллакса. По существу, он прокручивает как RecyclerView
внутри Fragment
, так и содержимое внутри ViewPager
.
Есть ли способ остановить прокрутку для CollapsingToolbarLayout
и только прокручивать содержимое в наложении Fragment
, когда пользователь видит, что Fragment
?
Это то, что мой XML иерархия выглядит следующим образом:
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.AppBarLayout>
<android.support.design.widget.CollapsingToolbarLayout
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
app:layout_collapseMode="parallax"/>
<android.support.v7.widget.Toolbar />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<LinearLayout
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
<android.support.design.widget.TabLayout />
<!-- Two fragments inside ViewPager each containing a RecyclerView -->
<android.support.v4.view.ViewPager />
</LinearLayout>
<!-- User Clicks a button and fragment is added to this framelayout -->
<!-- This fragment overlays on top of the entire Activity layout -->
<!-- This fragment also contains a recyclerview -->
<FrameLayout/>
</android.support.design.widget.CoordinatorLayout>
Если вы не хотите, чтобы ваша деятельность, чтобы прокручивание AppBar затем удалите layout_behavior атрибут для LinearLayout. Я предполагаю, что ваш фрагмент FrameLayout содержит этот layout_behavior? – McGuile
Вы хотите, чтобы ваш FrameLayout отображался в полноэкранном режиме (охватывая панель инструментов) или под панелью инструментов? Если вы перемещаете FrameLayout за пределы CoordinatorLayout (охватывая панель инструментов), вы можете затем переопределить прослушиватель касания, чтобы предотвратить прокрутку CoordinatorLayout в фоновом режиме. – blackcj
@McGuile, что имеет смысл, может быть, я могу программно удалить поведение прокрутки, когда Fragment накладывает активность – AndyRoid