J'utilise un ScrollView dans une mise en page et j'essaie d'utiliser le nouveau CoordinatorLayout
de la bibliothèque de support de conception .
Mon fichier de mise en page ressemble à ceci:
<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>
Lors du test, le scrollview n'occupe qu'une partie de l'écran. Qu'est ce qui ne s'est pas bien passé?
Le ScrollView standard est uniquement destiné à être utilisé comme parent. Vous devez remplacer ScrollView par Android.support.v4.widget.NestedScrollView
.
Un exemple peut être vu dans la documentation de référence pour AppBarLayout
.
NestedScrollView est comme ScrollView, mais il prend en charge le rôle de parent et d'enfant de défilement imbriqué sur les nouvelles et anciennes versions d'Android. Le défilement imbriqué est activé par défaut.
Vous pouvez utiliser un NestedScrollView dans un ScrollView parent. NestedScrollView est utilisé lorsqu'il existe un besoin pour une vue de défilement dans une autre vue de défilement. C'est là que cela est utile, lorsque le système doit décider quelle vue faire défiler.
Voici un exemple de NestedScrollView avec 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>