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

Cur*_*t0x 5 react-native

我刚刚将我的应用程序从 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>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dan*_*son 5

我通过向 Text 组件添加一个 key prop 解决了这个问题:

<Text selectable={true} key={Math.random()}>
   {text}
</Text>
Run Code Online (Sandbox Code Playgroud)

编辑:上面的解决方案似乎不适用于所有 RN 版本,另一种解决方案是removeClippedSubviews={false}FlatList


naf*_*med 2

您应该将其包含在 touchableopacity 中。

<TouchableOpacity style={{ flex: 1 }} 
     onPress={() =>}}>     
        <View>
         <Text selectable>{item}</Text>
        </View>
   </TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)