2015-09-30 17 views
31

Wie Sie in der beigefügten GIF sehen können, kann ich nicht durch die ListView scrollen. Sobald ich die Maustaste loslasse, rastet die Ansicht wieder in der ursprünglichen Position ein.ListView kann nicht scrollen

Ich habe die Dokumentation gelesen und es scheint wie Scrollen sollte nur arbeiten. Hier ist die Implementierung von render():

render: function(){ 
    return (
    <ListView 
     automaticallyAdjustContentInsets={false} 
     initialListSize={9} 
     dataSource={this.state.dataSource} 
     renderRow={this.renderTrack} 
     renderSectionHeader={this.renderSectionHeader}/> 
); 

enter image description here

Antwort

37

Ihre Listview eigentlich recht klein sein könnten, aber nicht auf diese Weise zu sichtbarem Überlauf erscheinen. Versuchen Sie flex: 1 oder height: 587 auf Ihrer ListView-Stileigenschaft festzulegen.

+1

Einstellen der Höhe hat den Trick! Darf ich fragen, warum Sie 587 ausgewählt haben? – jamesfzhang

+3

Ihr Screenshot war 587px groß =). Eine allgemeinere Lösung besteht darin, flex: 1 über Ihre Ansichtshierarchie bis zur Wurzel zu verwenden. – ide

+13

Die Verwendung von 'flex: 1' hat es nicht behoben. Ich denke jedoch nicht, dass ich nur eine statische Höhe einstellen kann, da sie mit verschiedenen iPhone-Größen kompatibel sein muss. EDIT: stellt fest, dass der Eltern-Container dieser ListView nicht 'flex: 1' hatte, das hat den Trick gemacht. – jamesfzhang

0

Es ist aufgrund dieser Eigenschaft, ich nehme an, Sie haben nur ein, fügen Sie vielleicht einen klebrigen Header pro Zeile ?:

renderSectionHeader Funktion

(sectionData, sectionid) => darstellbar

Falls angegeben, wird für diesen Abschnitt ein sticky-Header gerendert. Das klebrige Verhalten bedeutet, dass es mit dem Inhalt oben im Abschnitt scrollt, bis es den oberen Rand des Bildschirms erreicht, an diesem Punkt wird es bleiben nach oben, bis es vom nächsten Abschnitt vom Bildschirm geschoben wird Header.

21

Die einzige Zeit, die ich gesehen habe, ist, wenn contentContainerStyle auf flex eingestellt ist: 1. Entfernen Sie den Flex, wenn das der Fall ist.

+2

Danke! Das hat es für mich behoben. – fundead

+0

Danke! Ich habe mich 30 Minuten lang umgesehen, haha! – WilomGfx

8

Einstellung flex:1 zu Eltern der Liste hat den Trick für mich getan.

+1

Arbeitete wie ein Charme. Diese Antwort sollte mehr Upvotes erhalten! –

+0

wäre es toll, wenn jemand es erklären könnte :) – roocell

+0

Weiß nicht warum aber funktioniert für mich. – klvs

3

Ich hatte das gleiche Problem, ich hatte eine View Umhüllung der ListView, entfernte ich die äußere View und jetzt funktioniert es wie erwartet.

Verwandte Themen