Comment ajouter des barres de défilement à une vue dans Android?
J'ai essayé en ajoutant Android:scrollbars:"vertical"
au LinearLayout
dans mon fichier XML de mise en page mais cela ne fonctionne pas.
Je pensais que les barres de défilement étaient dessinées par défaut dans Android mais cela ne semble pas ainsi. Il semble que nous devons les dessiner nous-mêmes - comment faire?
Vous ne pouvez pas ajouter de barres de défilement à un LinearLayout
car il ne s'agit pas d'un conteneur pouvant défiler.
Seuls les conteneurs déroulants tels que ScrollView
, HorizontalScrollView
, ListView
, GridView
, ExpandableListView
affichent des barres de défilement.
Je vous suggère de placer votre LinearLayout
à l'intérieur d'un ScrollView
qui affichera par défaut des barres de défilement verticales s'il y a suffisamment de contenu pour faire défiler.
<ScrollView
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
>
<!-- Your content goes here -->
</LinearLayout>
</ScrollView>
Si vous souhaitez que la barre de défilement verticale soit toujours affichée, ajoutez Android:scrollbarAlwaysDrawVerticalTrack="true"
à votre ScrollView
. Notez que la hauteur de LinearLayout
est définie sur wrap_content
- cela signifie que la hauteur du LinearLayout
peut être supérieure à celle du ScrollView
s'il y a suffisamment de contenu - dans ce cas, vous pourrez faire défiler votre LinearLayout
haut et bas.
Vous ne pouvez pas ajouter une barre de défilement à un widget de cette façon. Vous pouvez envelopper votre widget dans un ScrollView
. Voici un exemple simple:
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content">
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<TextView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:id="@+id/txt"/>
</LinearLayout>
</ScrollView>
Si vous voulez le faire en code:
ScrollView sv = new ScrollView(this);
//Add your widget as a child of the ScrollView.
sv.addView(wView);