Ich verwende eine ScrollView in einem Layout und versuche, das neue CoordinatorLayout
aus der Design Support Library zu verwenden.
Meine Layoutdatei sieht folgendermaßen aus:
<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">
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical">
...
</LinearLayout>
</ScrollView>
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar ... />
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
Beim Testen belegt die Bildlaufansicht nur einen Teil des Bildschirms. Was schief gelaufen ist?
Die Standard-ScrollView ist nur zur Verwendung als übergeordnetes Element vorgesehen. Sie müssen die ScrollView in ein Android.support.v4.widget.NestedScrollView
ändern.
Ein Beispiel finden Sie in der Referenzdokumentation für AppBarLayout
.
NestedScrollView ist genau wie ScrollView, unterstützt jedoch das Funktionieren als verschachteltes übergeordnetes und untergeordnetes Bildlaufelement auf neuen und alten Android-Versionen. Das verschachtelte Scrollen ist standardmäßig aktiviert.
Sie können eine NestedScrollView in einer übergeordneten ScrollView verwenden. NestedScrollView wird verwendet, wenn eine Bildlaufansicht in einer anderen Bildlaufansicht erforderlich ist. Dies ist hilfreich, wenn das System entscheiden muss, welche Ansicht gescrollt werden soll.
Hier ist ein Beispiel für NestedScrollView mit CoordinatorLayout:
<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.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- Your scrolling content -->
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.AppBarLayout
Android:layout_height="wrap_content"
Android:layout_width="match_parent">
<Android.support.v7.widget.Toolbar
...
app:layout_scrollFlags="scroll|enterAlways"/>
<Android.support.design.widget.TabLayout
...
app:layout_scrollFlags="scroll|enterAlways"/>
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>