2016-10-14 9 views
1

[React Native android]スクロールビューに埋め込まれているときにリストビューのスクロールを行う方法を知っていますか?それは、iOSのための仕事ですが、アンドロイドのために働くことはありません。ネイティブに反応します。リストビューは、スクロールビュー内にあるときはスクロールできません。 (iOSの仕事ですが、アンドロイドではありません)

<ScrollView> 
    <Text>test1</Text> 
    <Text>test2<Text> 
    <ListView/> 
<scrollview> 

答えて

1

これは正しい方法ではありません。あなたがこの仕事をしても、それは悪い習慣です。 ScrollViewとListViewの主な違いは、メモリ使用量を最適化するために、ListViewが表示されているアイテムのみをレンダリングしてリサイクルすることです。 ListViewをScrollViewに追加することで、この機能を「妨害する」可能性が高くなります。

ListViewをScrollViewに追加しようとするのではなく、異なる種類の項目を持つListViewのみを使用してください。線に沿って何か:タイプ「TYPE1」の1とタイプ「TYPE2」の別の1:このビューをレンダリングする前に、今

export default class MyListComponent extends Component { 
    constructor(props) { 
     super(props); 

     const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); 
     this.state = { 
      dataSource: ds.cloneWithRows(this.props.data) 
     }; 
    } 

    render() { 
     return (
      <ListView 
       enableEmptySections={true} 
       dataSource={this.state.dataSource} 
       renderRow={(rowData) => this._getViewForType(rowData)}/> 
     ); 
    } 

    _getViewForType(rowData) { 
     switch (rowData.renderType) { 
      case 'type1': 
       return <Text>test1</Text> 
      case 'type2': 
       return <Text>test2</Text> 
      default: 
       // Render your normal/default listview item here. 
       return ... 
     } 
    } 
} 

、あなただけのアイテムのリスト内の2つの余分なアイテムを追加する必要があります。

+0

驚くばかり!どうもありがとうございました! –

+0

もう1つの質問ですが、スクロールビューではInputTextとボタンが1つあります。ボタンをクリックすると、リストビューをポップアップ&クローズします(高さは200、スクロール可能です)。どのようにできるのか? –

+0

'setState()'を使ってコンポーネントの状態を変更する必要があります。これは、コンポーネントの 'render()'関数に対する別の呼び出しを引き起こします。 'render()'では状態を確認し、それに基づいて子コンポーネントを表示/非表示にすることができます。 – George

関連する問題