【发布时间】:2018-01-26 06:41:54
【问题描述】:
我想通过更改文本的背景颜色来突出显示 React Native 应用程序中的多行文本。问题是整个文本区域的背景颜色都会发生变化,而不仅仅是单词下方。
class Example extends Component {
render() {
const text = '...';
return (
<View style={styles.textContainer}>
<Text style={styles.textStyle}>
{text}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
textContainer: {
flexDirection: 'row',
flexWrap: 'wrap',
width: 200,
},
textStyle: {
backgroundColor: 'red',
},
});
上面的代码结果如下:
但我希望它看起来像这样:
我可以通过拆分文本并将背景颜色添加到单个单词来获得该结果:
class Example extends Component {
render() {
const text = '...';
const brokenText = text.split(' ').map(word => (
<Text style={styles.textStyle}>{word} </Text>
));
return (
<View style={styles.textContainer}>
{brokenText}
</View>
);
}
}
但是将文本拆分为单个单词似乎并不是最好的解决方案,而且会带来巨大的性能成本。有什么更清洁的方法吗?
【问题讨论】:
-
您是否尝试过使用文本阴影之类的东西?我不确定反应原生的等价物是什么
-
@Felipe textShadow 有不同的外观(它是文本下方的模糊阴影),并不能很好地突出显示文本:/
-
是的,我在想也许有一些 hacky 用法,但它没有成功。如果你用换行符而不是字符分割怎么办,类似于stackoverflow.com/questions/16597304/…
标签: javascript android ios react-native flexbox