System:
OS: macOS 10.14.6
CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Memory: 317.94 MB / 16.00 GB
Shell: 5.3 - /bin/zsh
Binaries:
Node: 12.3.1 - /usr/local/opt/nvm/versions/node/v12.3.1/bin/node
Yarn: 1.16.0 - ~/.yarn/bin/yarn
npm: 6.9.0 - /usr/local/opt/nvm/versions/node/v12.3.1/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
Android SDK:
API Levels: 23, 28, 29
Build Tools: 28.0.3, 29.0.1
System Images: android-28 | Intel x86 Atom, android-28 | Intel x86 Atom_64, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-28 | Google Play Intel x86 Atom_64, android-29 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native: 0.60.5 => 0.60.5
npmGlobalPackages:
react-native-cli: 2.0.1
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>
);
}
}
Need to be able to select Text in FlatList.
Snack: https://snack.expo.io/@maltoze/selectable-bug-in-flatlist
Thanks for submitting your issue. Can you take another look at your description and make sure the issue template has been filled in its entirety?
馃憠 Click here if you want to take another look at the Bug Report issue template.
Also noticed this. I just upgraded my app from React Native 0.57.4 to 0.60.5 and now I can't select text on Android.
Text component rendered in FlatList is not selectable even if selectable={true} is specified.
I curse the day I let React Native into my life
Confirmed in 0.59.8 too, spent a good 30 minutes trying to figure out why this wasn't working on an Android 9.
Can confirm, the Text component is selectable, but when rendered as a FlatList element, it is not selectable regardless of the 'selectable' prop.
In my case I could remove the flat list, and use just a scroll view, but this isn't the ideal.
I even did a if for the platform.OS, ios uses flat list, Android uses scroll view
I have this problem too. Text component can't selectable on FlatList..
Same problem here
Same problem in 0.59.10
In my case, add key={Math.random()} solved it
key={Math.random()} not works for me.(rn 0.61.2)
Instead, adding removeClippedSubviews={false} for Flatlist solved it.
Expo SDK 35.0.0 also has this problem. RN 0.59.8.
removeClippedSubviews={false} does work around it for me.
Added pointerEvents={'box-none'} for wrapper View solved this problem.
Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.
I'm on Expo SDK 37 now (RN 0.61.4). Still need removeClippedSubviews={false} to select text.
as displayed in the following Snack adding removeClippedSubviews={false} to the FlatList fixes the issue. @maltoze would you consider closing this issue? React-Native has currently 744 open issues. :smiley: :peace_symbol: Thanks Fabrizio
as displayed in the following Snack adding
removeClippedSubviews={false}to theFlatListfixes the issue. @maltoze would you consider closing this issue? React-Native has currently 744 open issues. 馃槂 鈽笍 Thanks Fabrizio
That's not a fix -- it's a workaround. It sacrifices FlatList performance to be able to select text.
Issue https://github.com/facebook/react-native/issues/23870 and pull request https://github.com/facebook/react-native/pull/26334 include many information on removeClippedSubviews.
SOLVED
I'm preparing a PR, applying the same solution from https://github.com/facebook/react-native/pull/28852 adding super.setTextIsSelectable(true); to ReactTextView
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
if (mContainsImages && getText() instanceof Spanned) {
Spanned text = (Spanned) getText();
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
for (TextInlineImageSpan span : spans) {
span.onAttachedToWindow();
}
}
super.setTextIsSelectable(true);
}
I am preparing the PR. Thanks :smiley:
I will need to verify for regression of functionalities included in https://github.com/facebook/react-native/commit/a0268a7bfc8000b5297d2b50f81e000d1f479c76
Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.
Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, please feel free to create a new issue with up-to-date information.
Actually there is another workaround which does not require to disable removeClippedSubviews. Example:
export default class SelectableText extends React.Component {
constructor ( props ) {
super(props);
this.state = {
selectableFix: false
};
this.selectableFixTimeout = null;
}
shouldComponentUpdate ( nextProps, nextState ) {
return(
this.props.text !== nextProps.text ||
this.state.selectableFix !== nextState.selectableFix
);
}
componentDidMount () {
this.selectableFixTimeout = setTimeout(() => {
this.setState({
selectableFix: true
});
}, 100);
}
componentWillUnmount () {
clearTimeout(this.selectableFixTimeout);
}
render () {
return(
<Text
selectable={this.state.selectableFix}
>
{this.props.text}
</Text>
);
}
}
Most helpful comment
Expo SDK 35.0.0 also has this problem. RN 0.59.8.
removeClippedSubviews={false}does work around it for me.