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>
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>
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.
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
.
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.
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.
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 .
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>
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.
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());
* //
Placez votre TableLayout dans une disposition ScrollView. Cela résoudra votre problème.