web-dev-qa-db-fra.com

Comment utiliser ScrollView sous Android?

J'ai un fichier de présentation XML, mais le texte est plus que convenable dans la taille de l'écran. Que dois-je faire pour créer une ScrollView?

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:stretchColumns="1" >

    <TableRow>
        <ImageView
            Android:id="@+id/imageView"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="5dip"
            Android:layout_marginTop="10dip"
            Android:layout_marginRight="5dip"
            Android:tint="#55ff0000"
            Android:src="@drawable/icon" />
    </TableRow>
    <TableRow>
        <TextView
            Android:id="@+id/name"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Name " />
        <TextView Android:id="@+id/name1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Veer" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/age"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Age" />

        <TextView Android:id="@+id/age1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="23" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/gender"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Gender" />
        <TextView Android:id="@+id/gender1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Male" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/profession"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Professsion" />
        <TextView Android:id="@+id/profession1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Mobile Developer" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/phone"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Phone" />
        <TextView Android:id="@+id/phone1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="03333736767" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/email"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Email" />
        <TextView Android:id="@+id/email1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="[email protected]" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/hobby"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Hobby" />
        <TextView Android:id="@+id/hobby1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Play Games" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/ilike"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  I like" />
        <TextView Android:id="@+id/ilike1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Java, Objective-c" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/idislike"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  I dislike" />
        <TextView Android:id="@+id/idislike1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Microsoft" />
    </TableRow>
    <TableRow>
        <TextView Android:id="@+id/address"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:padding="3dip"
            Android:text="  Address" />
        <TextView Android:id="@+id/address1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:text="Johar Mor" />
    </TableRow>
</TableLayout>
217
Chatar Veer Suthar

Faites simplement de la mise en page de haut niveau un ScrollView:

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fillViewport="true">

    <TableLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:stretchColumns="1">

        <!-- everything you already have -->

    </TableLayout>
</ScrollView>
444
Ted Hopp

Il y a deux options. Vous pouvez faire défiler toute votre mise en page ou uniquement le TextView.

Pour le premier cas,

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <RelativeLayout
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent" >

        <TableLayout
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:stretchColumns="1" >

            <TableRow>

                <ImageView
                    Android:id="@+id/imageView"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginLeft="5dip"
                    Android:layout_marginRight="5dip"
                    Android:layout_marginTop="10dip"
                    Android:src="@drawable/icon"
                    Android:tint="#55ff0000" >
                </ImageView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/name"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Name " >
                </TextView>

                <TextView
                    Android:id="@+id/name1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Veer" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/age"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Age" >
                </TextView>

                <TextView
                    Android:id="@+id/age1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="23" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/gender"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Gender" >
                </TextView>

                <TextView
                    Android:id="@+id/gender1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Male" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/profession"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Professsion" >
                </TextView>

                <TextView
                    Android:id="@+id/profession1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Mobile Developer" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/phone"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Phone" >
                </TextView>

                <TextView
                    Android:id="@+id/phone1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="03333736767" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/email"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Email" >
                </TextView>

                <TextView
                    Android:id="@+id/email1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="[email protected]" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/hobby"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Hobby" >
                </TextView>

                <TextView
                    Android:id="@+id/hobby1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Play Games" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/ilike"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  I like" >
                </TextView>

                <TextView
                    Android:id="@+id/ilike1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Java, Objective-c" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/idislike"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  I dislike" >
                </TextView>

                <TextView
                    Android:id="@+id/idislike1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Microsoft" >
                </TextView>
            </TableRow>

            <TableRow>

                <TextView
                    Android:id="@+id/address"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:padding="3dip"
                    Android:text="  Address" >
                </TextView>

                <TextView
                    Android:id="@+id/address1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:gravity="left"
                    Android:text="Johar Mor" >
                </TextView>
            </TableRow>

            <Relativelayout>
            </Relativelayout>
        </TableLayout>
    </RelativeLayout>

</ScrollView>

ou, comme je l'ai dit, vous pouvez utiliser scrollView pour TextView seul.

29
Andro Selva

Comment utiliser ScrollView

Utiliser ScrollView n’est pas très difficile. Vous pouvez simplement en ajouter un à votre mise en page et y placer ce que vous voulez faire défiler. ScrollView ne prend qu'un enfant, donc si vous voulez y insérer quelques éléments, vous devez faire en sorte que la première chose ressemble à un LinearLayout.

<ScrollView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical">

        <!-- things to scroll -->

    </LinearLayout>
</ScrollView>

Si vous voulez faire défiler les choses horizontalement, utilisez un HorizontalScrollView .

Faire en sorte que le contenu remplisse l'écran

Comme il est dit dans cet article , vous voulez parfois que le contenu de ScrollView remplisse l'écran. Par exemple, si vous aviez des boutons à la fin d'un fichier Lisez-moi. Vous voulez que les boutons soient toujours à la fin du texte et au bas de l'écran, même si le texte ne défile pas.

Si le contenu défile, tout va bien. Toutefois, si le contenu est plus petit que la taille de l'écran, les boutons ne sont pas au bas.

enter image description here

Cela peut être résolu en combinant l'utilisation de fillViewPort sur ScrollView et l'utilisation d'un poids de présentation sur le contenu. Utiliser fillViewPort oblige ScrollView à remplir la zone parent. Définir le layout_weight sur l'une des vues de la LinearLayout permet à cette vue de se développer pour remplir tout espace supplémentaire.

enter image description here

Voici le XML

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fillViewport="true">                        <--- fillViewport

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical">

        <TextView
            Android:id="@+id/textview"
            Android:layout_height="0dp"                <--- 
            Android:layout_weight="1"                  <--- set layout_weight
            Android:layout_width="match_parent"
            Android:padding="6dp"
            Android:text="hello"/>

        <LinearLayout
            Android:layout_height="wrap_content"       <--- wrap_content
            Android:layout_width="match_parent"
            Android:background="@Android:drawable/bottom_bar"
            Android:gravity="center_vertical">

            <Button
                Android:layout_width="0dp"
                Android:layout_weight="1"
                Android:layout_height="wrap_content"
                Android:text="Accept" />

            <Button
                Android:layout_width="0dp"
                Android:layout_weight="1"
                Android:layout_height="wrap_content"
                Android:text="Refuse" />

        </LinearLayout>
    </LinearLayout>
</ScrollView>

L'idée de cette réponse est venue d'une réponse précédente qui est maintenant supprimée ( lien pour les utilisateurs de 10K ). Le contenu de cette réponse est une mise à jour et une adaptation de this post .

23
Suragch

A ScrollView est un type spécial de FrameLayout en ce qu’il permet aux utilisateurs de faire défiler une liste de vues occupant plus d’espace que l’affichage physique.J’ajoute seulement quelques attributs.

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
     Android:layout_width="fill_parent"
     Android:layout_height="fill_parent"
     Android:fillViewport="true"
     Android:scrollbars = "vertical"
     Android:scrollbarStyle="insideInset"
    >
    <TableLayout
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:stretchColumns="1"
        >
        <!-- Add here which you want -->
    </TableLayout>

</ScrollView>
13
IntelliJ Amiya

Comme indiqué ci-dessus, vous pouvez le placer dans un ScrollView... et si vous souhaitez que la vue de défilement soit horizontale, placez-le à l'intérieur de HorizontalScrollView... et si vous souhaitez que votre composant (ou votre mise en page) prenne en charge les deux mettent dedans à la fois comme ceci:

  <HorizontalScrollView>
        <ScrollView>
            <!-- SOME THING -->
        </ScrollView>
    </HorizontalScrollView>

et avec le réglage de layout_width et layout_height ofcourse.

7
Zuhair Kj

Pour faire défiler les données en vue texte, vous pouvez l’utiliser pour votre vue texte. et ajoutez et pour toute autre mise en page, vous pouvez simplement ajouter une vue de défilement sur la mise en page comme le disent les gens ci-dessus.

/ ** Android: scrollable = true dans textview en format XML.

TextView txtScroll = (TextView) findViewById(R.id.txt1);
        txtScroll.setMovementMethod(new ScrollingMovementMethod());

* //

4
Sandip Lawate

Placez votre TableLayout dans une disposition ScrollView. Cela résoudra votre problème.

4
Rasel