Ich habe folgendes Haupt-Seitenlayout in meiner App: Seltsames Verhalten des CoordinatorLayout in Verbindung mit 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>
Der rollbare Inhalt ist der ViewPager. Ich verwende die ViewPager in Verbindung mit dem 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);
Alle Fragmente in dem ViewPager des Adapters eine RecyclerView nach innen haben. Wenn ich zuerst den Inhalt des RecyclerViews scrolle (so dass die App-Leiste ausgeblendet ist), dann wechsle zu einer anderen Datenseite im ViewPager und scrolle den RecyclerView-Inhalt nach unten, die App-Leiste ist ... unsichtbar. Die Hauptschritte dieses Problem führen:
- auf Geräte mit api Ebene verlauf 11 oder höher (bei Geräten mit api Ebene weniger als 11 alles in Ordnung ist);
- Inhalt scrollen;
- Wechsel zu einer anderen ViewPager-Seite;
- Inhalt scrollen, um die App-Leiste sichtbar zu machen;
- App-Leiste ist unsichtbar.
Wo ist mein Problem? Vielen Dank.
EDIT1: Fragment der Symbolleiste Initialisierung
Toolbar toolbar = (Toolbar) view.findViewById(R.id.actionToolbar);
toolbar.setTitle(toolbarTitleResId);
toolbar.inflateMenu(menuResId);
toolbar.setOnMenuItemClickListener(listener);
EDIT2: Fragment Layout
<?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>
Ich sehe nichts, was in dem Code, den Sie gepostet haben, herausragt. Können Sie den Code für Ihre Symbolleisteninitialisierung innerhalb des Fragments und der Fragmentlayoutdatei hinzufügen? – blackcj
Mit dem hinzugefügten Fragment-Code funktioniert auf meinem API 22-Gerät immer noch alles korrekt. Ich würde empfehlen, den Symbolleisten unterschiedliche IDs zu geben, um Namenskonflikte zu vermeiden, aber selbst mit derselben ID konnte ich das Problem nicht reproduzieren. Wenn du hier mehr Code posten oder das Projekt auf Github setzen könntest, würde ich mich freuen, einen anderen Blick darauf zu werfen. – blackcj
@blackcj, ok, ich werde versuchen, meinen Code sauberer zu machen, und wenn ich den Fehler nicht finde, werde ich ihn auf Github setzen. – vadim