在Android上无法选择FlatList中的文本

时间:2019-10-27 14:01:00

标签: react-native react-native-android

我刚刚将我的应用程序从React Native 0.58.5升级到0.61.2,现在我无法在Android的FlatList中选择文本。

我试图在React Native 58.5的Text组件中设置selectable = {true},它运行良好并且可以复制Text中的内容。 但是在将React Native版本从0.58.5升级到0.61.2之后,无法选择用于复制/粘贴Android 9.0中内容的文本。 实际上它可以在Android 5.0上运行,但不能在Android 9.0上运行

export default class App extends React.Component {
  _renderItem = ({item}) => {
    return (
      <View>
        <Text selectable>{item}</Text>
      </View>
    )
  }

  _keyExtractor = (item, index) => index.toString();

  render() {
    return (
      <View style={styles.container}>
        <Text selectable>This is selectable Text...</Text>
        <FlatList
          data={['not selectable text', 'not selectable text']}
          renderItem={this._renderItem}
          keyExtractor={this._keyExtractor}
        />
      </View>
    );
  }
}

预期的行为:Flatlist中的文本应该是可选的。

当前行为:即使在Android 9.0中设置了selectable = {true},也无法选择Text组件

2 个答案:

答案 0 :(得分:1)

您应该将其围成可触摸的透明度。

<TouchableOpacity style={{ flex: 1 }} 
     onPress={() =>}}>     
        <View>
         <Text selectable>{item}</Text>
        </View>
   </TouchableOpacity>

答案 1 :(得分:1)

我通过在Text组件中添加一个关键道具来解决此问题:

<Text selectable={true} key={Math.random()}>
   {text}
</Text>

编辑:上面的解决方案似乎不适用于所有RN版本,替代解决方案是在removeClippedSubviews={false}上设置FlatList