Ho il seguente layout di pagina principale nella mia app: Strano comportamento del CoordinatorLayout in combinazione con ViewPager
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/mainPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/app_bar_scrolling_view_behavior">
</android.support.v4.view.ViewPager>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/actionToolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="@string/app_name"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_scrollFlags="scroll|enterAlways">
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Il contenuto scorrevole è il ViewPager. Io uso il ViewPager in combinazione con il TabLayout:
ViewPager viewPager = (ViewPager) v.findViewById(R.id.mainPager);
TabLayout tabLayout = (TabLayout) v.findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
Tutti i frammenti in adattatore del ViewPager ha un RecyclerView all'interno. Alla prima apertura del contenuto di RecyclerView (in modo che la barra delle applicazioni sia nascosta), quindi passare a un'altra pagina di dati nel ViewPager e scorrere verso il basso i contenuti di RecyclerView, la barra delle applicazioni è ... invisibile. Le principali fasi che conducono a questo problema:
- esecuzione su dispositivi con livello di api 11 o superiore (su dispositivi con livello di API inferiore a 11 tutto è ok);
- Scorrimento del contenuto verso l'alto;
- Passaggio a un'altra pagina di ViewPager;
- Scorrimento del contenuto verso il basso per rendere visibile la barra delle applicazioni;
- la barra delle applicazioni è invisibile.
Dove è il mio problema? Grazie.
Edit1: l'inizializzazione della barra degli strumenti di Fragment
Toolbar toolbar = (Toolbar) view.findViewById(R.id.actionToolbar);
toolbar.setTitle(toolbarTitleResId);
toolbar.inflateMenu(menuResId);
toolbar.setOnMenuItemClickListener(listener);
EDIT2: il layout di Fragment
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/actionToolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_alignParentTop="true"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="?attr/colorPrimary">
</android.support.v7.widget.Toolbar>
<View
android:id="@+id/anchor"
android:layout_height="8dp"
android:layout_width="match_parent"
android:background="@drawable/shadow_gradient_drawable"
android:layout_below="@+id/actionToolbar">
</View>
<android.support.v7.widget.RecyclerView
android:id="@+id/verticalRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/anchor"/>
</RelativeLayout>
Non vedo nulla che risulti nel codice che hai postato. Puoi aggiungere il codice per l'inizializzazione della barra degli strumenti all'interno del frammento e del file di layout del frammento? – blackcj
Con il codice Fragment aggiunto, tutto funziona ancora correttamente sul mio dispositivo API 22. Consiglierei di dare le barre degli strumenti di ID diversi per evitare conflitti di denominazione ma, anche con lo stesso id, non ero in grado di riprodurre il problema. Se potessi pubblicare più codice qui o mettere il progetto su Github, sarei felice di dare un'altra occhiata. – blackcj
@blackcj, ok, proverò a rendere il mio codice più pulito e se non trovo l'errore lo metto su Github. – vadim