我刚刚将我的应用程序从 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 组件
我通过向 Text 组件添加一个 key prop 解决了这个问题:
<Text selectable={true} key={Math.random()}>
{text}
</Text>
Run Code Online (Sandbox Code Playgroud)
编辑:上面的解决方案似乎不适用于所有 RN 版本,另一种解决方案是removeClippedSubviews={false}在FlatList
您应该将其包含在 touchableopacity 中。
<TouchableOpacity style={{ flex: 1 }}
onPress={() =>}}>
<View>
<Text selectable>{item}</Text>
</View>
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1699 次 |
| 最近记录: |