react-native 实践 borderRadius 和 border 冲突?
非特别说明,react-native
版本是0.42
。
1. Android
中 borderRadius
和 border
冲突?
Android
中当 borderRadius
部分设置非0值(部分为0),border
将无效。
手机:华为mate8
EMUI:4.1
android:6.0
iOS上正确的样式:
然后发现删除 style
borderTopLeftRadius: 4, borderBottomLeftRadius: 4, borderTopRightRadius: 0, borderBottomRightRadius: 0
可正常显示 border。
解决方案
把 border
放在两个按钮的父容器上。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 开发基于 Node.js 的前端工具
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
6. Android 上 width 为
Infinity
导致的 UI 问题如上,假设我们有个
list
要渲染(item
宽度平分WIDTH
)。直觉看来上面的没有任何问题,并且在 iOS 上也的确没有任何问题。但在 Android 上,由于
list
初始时可能是空数组(长度 0),所以初始时宽度设置为{width: Infinity}
,当我们后面有数据了(长度大于 0),View
却始终不显示!所以切记,任何时候不要在 Android 上设置
{width: Infinity}
或其它非法值。5.
flexbox
实现等宽布局如下,希望交通工具图标下面的实线/虚线可以等宽,且无法直接设置两者宽度。
一般情况下,好像没什么问题,直接设置
flexGrow
即可。但问题是虚线的实现采用了很 trick 的方法:
line
内部排列一个个小View
,line
本身背景色透明。这时有个严重问题,右侧虚线被撑开了,实现和虚线不再是等分的。
所以,在 dom 内部内容宽度可能很大时,怎么实现等分?
以上即可解决:
flexBasis: 0
保证宽度计算都是从 0 开始,此时内容的宽度的影响就被去除;flexGrow: 1,flexShrink: 1,
保证始终等分。4.
TouchableHightlight
必须注册onPress
回调,否则不显示underlayColor
详情见: facebook/react-native#14908
如果不注册
onPress
回调,TouchableHighlight
看起来手指按压时无反应,原因即:3.
Android
上字体偏下的问题第一张是iOS的,第二张是android的,可以看见,第二张的border和文字明显贴的过近。
inspect相应元素,可以发现,是android上文字在垂直方向上偏下。
解决:
用
paddingBottom
保证不会贴在一起,容忍android上损失一点还原度...2.
Android
上overflow
默认hidden
且无法改变即超出容器部分被裁切,细节可看The overflow style property defaults to hidden and cannot be changed on Android。
iOS 可以支持
overflow: visible
等其它值,这点需注意。