Comment puis-je obtenir mon ListView pour faire défiler?
J'ai une assez complexe et qu'une partie de cela, j'ai une ListView à l'intérieur d'un LinearLayout dans un ScrollView (et de beaucoup plus de composants, mais ils n'ont pas d'importance dans ce numéro).
Maintenant l'ensemble de l'activité défile bien comme il faut, mais la liste est limitée à la hauteur, et lorsque les Éléments à l'intérieur de dépasser la hauteur, l'disparaître de mon écran. J'ai essayé de mettre la liste à l'intérieur de son propre ScrollView, mais cela ne fonctionne pas. Quand j'essaie de faire défiler sur la liste, le principal ScrollView est sélectionné et que mon écran défile au lieu de la liste.
Ma question peut sembler facile, mais je n'ai pas été en mesure de résoudre ce problème... Est-il possible de faire la liste déroulante aswell?
Pertinentes XML:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:id="@+id/GlobalLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView android:id="@+id/EndpointList"
android:choiceMode="multipleChoice"
android:layout_height="175dip"
android:layout_width="fill_parent" />
</LinearLayout>
</ScrollView>
OriginalL'auteur ThaMe90 | 2011-03-15
Vous devez vous connecter pour publier un commentaire.
Au lieu de ListView avec d'autres modèles à l'intérieur de ScrollView créer une ListView avec en-tête et pied de page.
Ajouter des points de vue qui doit être au-dessus de ListView comme un en-tête:
et que, en dessous d'un pied de page:
Mettre tout ce qui devrait être au-dessus de ListView à en-tête de la ListView et la même chose avec le pied de page.
En conséquence, vous obtiendrez un défilement de vue.
Il ne remplace pas une liste, il suffit résout le problème avec le ScrollView par l'éliminer. L'en-tête et Pied de page peut être n'importe quel type de Vue.
Mais ensuite, après l'ajout de quelques en-Têtes, la hauteur du total LinearLayout ne ferait qu'augmenter, ai-je le droit? Si oui, c'est exactement ce que je voulais éviter à la Liste...
si listview taille est de 0 alors comment résoudre le problème
Splendide solution, c'est exactement ce que je cherchais 🙂
OriginalL'auteur pawelzieba
En fait, la manière que j'ai c'est vraiment de travail... de Placer une ListView dans un LinearLayout dans un ScrollView. Il suffit d'éviter que la liste est l'enfant direct de la ScrollView, et cela fonctionne très bien...
Juste être conscient que si il n'y a pas suffisamment d'éléments dans la liste pour le remplir de sorte qu'il va "hors écran", qu'il ne sera pas de défilement (logiquement). Notez également que si vous avez assez d'éléments pour faire défiler, vous avez besoin de maintenir la pression sur un élément dans la liste pour le faire défiler, et la moitié du temps, l'accent est donné à l'global scrollview en lieu et place de la Liste... Pour éviter cela (la plupart du temps), maintenir la pression sur le plus haut ou le plus bas de l'élément, en fonction de la façon dont vous voulez les faire défiler.Cela permettra d'optimiser votre chance de se concentrer sur votre Liste.
J'ai fait une vidéo qu'il est possible, suis de le télécharger maintenant sur YouTube...
Vidéo est http://www.youtube.com/watch?v=c53oIg_3lKY. La qualité est plutôt mauvaise, mais il prouve mon point.
Juste pour un aperçu global, j'ai utilisé le ScrollView être capable de faire défiler l'ensemble de mon activité, le LinearLayout pour l'Activité de mise en page, et la ListView, ainsi, faire la liste...
Eh bien, il a travaillé pour moi... la vidéo prouve...
D'ailleurs, je n'ai jamais dit que cela fonctionnait bien, juste qu'il a travaillé...
pouvez-vous donner plus de code
Ne fonctionne pas pour moi. En plus de la vidéo montre tout, ne fonctionne pas vraiment pour vous. Peut-être un bug qui vous intéressent. Mais il semble que c'est le travail dans moins de la moitié du temps.
OriginalL'auteur ThaMe90
Essayer ce code peut vous aider à
Même sans cette explication ne peut pas travailler parce que vous empêchez la scrollview pour faire défiler; la chose exacte que c'était fait pour.
OriginalL'auteur jerang kong
Je voudrais juste noter quelque chose pour la vidéo
La listview est de travailler une fois tous les x touche pas parce que vous l'avez placé à l'intérieur d'un linearlayout mais parce que vous touchez le le diviseur...
la scrollview sera alors considérer que l'endroit que vous avez touchés n'ont pas d'enfants à l'envoi de l'motionevent... donc il appelle le super.dispatchTouchEvent qui est dans ce cas le point de Vue.dispatchTouchView d'où la listview.onTouchEvent.
Lorsque vous touchez l'intérieur d'une ligne de la scrollview qui est vraiment un viewgroup va envoyer de l'expédition pour les enfants dans votre cas, le textview et n'appelle jamais l'un de la vue, donc la liste ne se défile pas.
Espère que mon explication est assez claire à souligner pourquoi n'est-il pas de travail.
OriginalL'auteur Codewarrior