在React Native想要顯示陰影(Shadow)是一件意想不到的麻煩事,因為陰影以原生的方式產生,各平台的各Version各有不同。
以下簡單解釋如何處理跨平台的Shadow。
View Style Props
直接在任何View的style
加入shadow。
// Android
elevation: 2,
// iOS
shadowColor: '#000000',
shadowOpacity: 0.4,
shadowRadius: 1,
shadowOffset: {
height: 1,
width: 0,
},
- https://facebook.github.io/react-native/docs/view-style-props.html#elevation
- https://github.com/facebook/react-native/issues/2768
- https://stackoverflow.com/q/41320131/6025730
Android伏位
elevation
用在TouchableOpacity
裡的View
沒有效果- 要轉用
TouchableWithoutFeedback
- 要轉用
- [Fixed]
View
沒有backgroundColor
的話elevation
沒有效果
[Android] Used with borderRadius, overflow='hidden' issue
很多時候當我們想建立一些Card View(i.e. View有round corner),需要用到overflow=hidden
,但這和Shadow會產生衝突,因為Android的Shadow是在View外面的。
詳情:
https://github.com/facebook/react-native/issues/10411
https://github.com/facebook/react-native/issues/449