android ScrollView mise en page (wrap_content, taille maximale)
Voici ce que je voudrais que mon ScrollView à ressembler à:
- La taille maximale est définie avec la layout_weight (ainsi que d'autres points en dessous de la ScrollView peuvent être affichés correctement)
- Si le contenu est plus petit que la taille maximale, puis il se comporte comme avec
layout_height="wrap_content"
Voici ce que j'ai actuellement:
<ScrollView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:measureAllChildren="true"
android:fillViewport="false"
>
Je ne pense pas que le measureAllChildren
fait vraiment rien du tout...
Si j'ajoute android:layout_weight
, la taille sera toujours ce que je voudrais le maximum pour être. Sans elle, il vient s'étend plus qu'il ne le devrait...
Je n'ai pas l'esprit de l'extension de la ScrollView classe pour modifier le comportement de onMeasure si j'ai besoin de...?
PS: Si ça fait de différences, je suis en train de le faire fonctionner à partir de Froyo de l'avant.
Pourquoi avez-vous appelé "layout_weight" ? ne devrait-il pas être quelque chose comme "layout_max_height" ?
OriginalL'auteur Matthieu | 2012-02-26
Vous devez vous connecter pour publier un commentaire.
J'ai fini par écrire ma propre classe, en étendant la ScrollView
Puisque vous demander...voici le code. Probablement pas le plus propre, mais c'est ce que je veux.
Noter qu'il attend de la layout_weight lorsque la vue est créée et vous ne devriez pas régler le weigthSum dans le parent LinearLayout ou vous aurez de drôles de choses (car le poids de celui-ci change de l'original de la valeur à 0 en fonction de la taille du contenu de la ScrollView)
Tout d'abord, dans le fichier de mise en page, la vue est déclaré comme ceci:
Puis le code du widget:
là vous allez, s'il vous plaît commentaire si vous l'améliorer...
Est-il possible de régler la hauteur maximum en dp, au lieu de poids? si oui, comment?
Peut-être que vous voulez vérifier ceci: stackoverflow.com/questions/4054567/...
OriginalL'auteur Matthieu
Si je comprends votre exigence correctement, la façon dont je l'ai fait quelque chose comme cela est de placer la scrollview le long avec autre chose que vous souhaitez afficher en dessous dans une Relative mise en page. Puis, dans votre fichier de mise en page placez l'élément sur le bas de l'écran dans le premier fichier (avec android:layout_alignParentBottom="true"), puis mettre le défilement de la vue et de le placer au-dessus du premier élément en utilisant quelque chose comme:android:layout_above="@id/firstItem". Comme ce en qui j'ai mis une image vue sur le fond avec un défilement de la vue au-dessus d'elle en prenant le reste de l'espace:
OriginalL'auteur Kaediil
Ici une autre solution en utilisant des tailles au lieu de poids. J'ai étendu le ScrollView et ajouté du code pour mettre en œuvre cette fonctionnalité:
https://gist.github.com/JMPergar/439aaa3249fa184c7c0c
J'espère que ce sera utile.
OriginalL'auteur JMPergar
JMpergar réponse semble droite mais sa ne fonctionnait pas jusqu'à ce que j'ai changé le onMeasure méthode comme ci-dessous.
OriginalL'auteur Hardik