Je rencontre un problème avec la version Android.
J'utilise le chat doué pour mon chat d'application. Mais la saisie de texte est couverte par le clavier, je ne peux donc pas voir ce que je saisis.
J'utilise la version 0.51 de React-native. J'ai déjà suivi des couples de solutions mais cela ne fonctionne toujours pas.
J'ai essayé cette solution qui utilise keyboardAvoidingView et j'ai également ajouté KeyboardSpacer et son ne fonctionne pas non plus.
Tout conseil serait très bien.
Voici mon code de composant de rendu
render() { console.log(this.state); return ( <View style={{flex: 1}}> <GiftedChat messages={this.state.messages} onSend={Fire.shared.send} loadEarlier={this.state.loadEarlier} isLoadingEarlier={this.state.isLoadingEarlier} user={{ name: this.props.profile.name, _id: this.props.profile.user_id, avatar: this.props.profile.profile_image }} renderUsernameOnMessage={true} renderActions={this.renderCustomActions} renderAvatar={this.renderAvatar} renderBubble={this.renderBubble} renderSend={this.renderSend} renderSystemMessage={this.renderSystemMessage} renderCustomView={this.renderCustomView} renderFooter={this.renderFooter} keyboardShouldPersistTaps={'always'} /> <KeyboardSpacer/> </View> )}
4 Réponses :
Veuillez ajouter le style suivant:
paddingHorizontal: 20,
Où dois-je mettre le style? dans View ou dans le composant GiftedChat?
Je suppose à ton texte
Il semble que ce soit un problème courant avec React Native Gifted Chat et Expo sur les appareils Android.
Vous pouvez utiliser le package react-native-keyboard-spacer
pour garder le contenu visible après l'ouverture le clavier:
import React, { Component } from 'react'; import { View, Platform } from 'react-native'; import KeyboardSpacer from 'react-native-keyboard-spacer'; import { GiftedChat } from 'react-native-gifted-chat'; export default class Chat extends Component { render() { const giftedChatMessages = [ ... ]; return ( <View style={{flex: 1}}> <GiftedChat messages={giftedChatMessages} onSend={newMessages => onSend(newMessages[0].text)} user={{ _id: 1, }} renderAvatar={() => null} /> {Platform.OS === 'android' ? <KeyboardSpacer /> : null } </View> ) } }
J'ai également le même problème. Je l'ai résolu en ajoutant android: windowSoftInputMode = "AdjustResize"
dans le fichier AndroidManifest.xml comme ci-dessous:
<application android:name=".MainApplication" android:label="@string/app_name" ... ... > <activity android:name=".MainActivity" ... ... android:windowSoftInputMode="adjustResize" <!-- add here --> > ... </activity> ... </application>
Et ceci:
import { KeyboardAvoidingView } from 'react-native'; <View style={{ flex: 1 }}> <GiftedChat messages={this.state.messages} onSend={messages => this.onSend(messages)} user={{ _id: 1, }} /> {Platform.OS === 'android' && <KeyboardAvoidingView behavior="padding" />} </View>;
avez-vous essayé de définir la valeur keyboardVerticalOffset?
Oui je l'ai fait, mais cela ne fonctionne toujours pas :(