私はKeyboardAvoidingViewの中にFlatListを持っています。キーボードが表示されたら、FlatListの最後までスクロールしたいと思います。キーボードを表示した後、FlatListの最後までスクロールします
私は 'keyboardDidShow'イベントが発生するのを待ち受けていますが、scrollListEndを呼び出した後にFlatListが最後までスクロールされないため、早すぎることがあります。
KeyboardAvoidingViewのonLayoutイベントを調べましたが、関数をトリガするonLayoutイベントを設定するだけで、キーボードが表示されているときにKeyboardAvoidingViewのサイズが調整されなくなりました。
<KeyboardAvoidingView behavior='padding' style={{ flex: 1}} onLayout={this._scrollEnd}>
コード:
import React from 'react';
import {Image, Linking, Platform, ScrollView, StyleSheet, Text, TouchableOpacity, View, Button, Alert, FlatList, TextInput, KeyboardAvoidingView, Keyboard} from 'react-native';
import { MonoText } from '../components/StyledText';
export default class HomeScreen extends React.Component {
constructor() {
super();
this.state = {
messages: getMessages()
};
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._scrollEnd);
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidHide', this._scrollEnd);
}
_scrollEnd = (evt) => {
this.refs.flatList1.scrollToEnd();
}
render() {
return (
<KeyboardAvoidingView behavior='padding' style={{ flex: 1}} >
<FlatList
style={{ flex:1}}
ref="flatList1"
data={this.state.messages}
renderItem={({ item }) => <Text>{item.text}</Text>}
/>
</KeyboardAvoidingView>
);
}
}
'getItemLayout' propも追加しようとしましたか?それはそれを修正するように見えます:http://facebook.github.io/react-native/releases/0.44/docs/flatlist.html#getitemlayout。またはアイテムの高さは静的ではありませんか?あなたのプラットフォームで – Cherniv
ですか?勝つ、オス、リン? –
このコードは自分のコンピュータで機能します。 あなたは何が起こっているのか詳細を教えてください。スクロールは決して起こっていないのですか?それともコンテンツがカットされているのでしょうか? – whitep4nther