web-dev-qa-db-fra.com

Android: problème ScrollView

J'ai eu un certain nombre de problèmes avec ScrollViews. Récemment, j'ai essayé de créer un LinearView dont le contenu dépasse la taille de l'écran.J'ai donc créé la nouvelle mise en page avec l'élément parent ScrollView et défini sa largeur et sa hauteur sur des valeurs personnalisées (la mise en page doit apparaître sous forme de boîte de dialogue - ne remplissant pas tout l'écran).

Lorsque l'élément est sélectionné, la bordure rouge semble embrasser le rectangle de ScrollView LayoutWidth et LayoutHeight prédéfinis, ce qui est OK. Ensuite, j'ai placé à l'intérieur de LinearView et j'ai défini les valeurs LayoutWidth et LayoutHeight sur fill_parent.

Ensuite, quand j'ai commencé à ajouter les éléments dans le LinearLayout, la bordure (lile rouge) a enveloppé les éléments insérés, pas le ScrollView parent entier.

Ainsi, lorsque le contenu de LinearLayout (enfant de ScrollView) a dépassé la taille de ScrollView parent, le défilement n'apparaît pas et les éléments du bas sont simplement invisibles.

Quoi qu'il en soit ... dans ce cas, le contenu XML était trop étendu pour poster la question ici et maintenant j'ai le même problème avec l'exemple plus simple.

La partie suivante de la mise en page est destinée à être un EditText défilable (au cas où l'entrée de l'utilisateur dépasserait la taille principale du widget). Je voulais définir la hauteur EditText sur 120px, j'ai donc défini la hauteur Parent ScrollView sur 120px et l'enfant EditText sur fill_parent. Encore une fois, dans ce cas, EditText ne remplit pas toute la zone ScrollView mais une seule ligne:

 <ScrollView Android:layout_height="120px" Android:layout_width="fill_parent">
<EditText Android:id="@+id/txtContent" Android:layout_height="fill_parent" Android:layout_width="fill_parent" Android:text="TestContent">
</EditText>
</ScrollView>

Quelqu'un sait-il comment remodeler le contenu ci-dessus pour que le EditText remplisse le contrôle parent et au cas où l'entrée de l'utilisateur dépasse la taille du contrôle, le défilement apparaît?

Je vous remercie!

Modifier:

Voici les captures d'écran de la mise en page

suppression du lien ImageShack mort
Suppression du lien ImageShack mort

29
Niko Gamulin

Votre EditText doit avoir une hauteur de wrap_content. fill_parent n'a aucune signification dans un ScrollView. Si vous voulez que EditText remplisse votre ScrollView lorsque son contenu est plus petit que le ScrollView, utilisez Android:fillViewport="true" sur le ScrollView.

95
Romain Guy

Oui, comme l'a dit Romain, scrollview nécessite un combo suivant.

  1. pour ScrollView Android:fillViewport="true"
  2. pour l'enfant de ScrollView Android:layout_height="wrap_content"
9
JonA