react-native 实践 borderRadius 和 border 冲突?

发布于 2022-08-29 22:05:12 字数 1225 浏览 178 评论 5

非特别说明,react-native版本是0.42

1. Android 中 borderRadius 和 border 冲突?

Android 中当 borderRadius 部分设置非0值(部分为0),border 将无效。

手机:华为mate8
EMUI:4.1
android:6.0

2017-03-27 4 58 13

iOS上正确的样式:

2017-03-24 4 12 52

然后发现删除 style

    borderTopLeftRadius: 4,
    borderBottomLeftRadius: 4,
    borderTopRightRadius: 0,
    borderBottomRightRadius: 0

可正常显示 border。

解决方案

border 放在两个按钮的父容器上。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

淡忘如思 2022-05-04 04:44:53

6. Android 上 width 为 Infinity 导致的 UI 问题

<View style={styles.container}>
    {
        list && list.map(v => (
            <View style={[styles.item, {width: WIDTH / list.length}]}></View>
        ))
    }
</View>

如上,假设我们有个 list 要渲染(item 宽度平分 WIDTH)。直觉看来上面的没有任何问题,并且在 iOS 上也的确没有任何问题。

但在 Android 上,由于 list 初始时可能是空数组(长度 0),所以初始时宽度设置为 {width: Infinity},当我们后面有数据了(长度大于 0),View 却始终不显示!

所以切记,任何时候不要在 Android 上设置 {width: Infinity} 或其它非法值。

仙女山的月亮 2022-05-03 19:13:07

5. flexbox 实现等宽布局

如下,希望交通工具图标下面的实线/虚线可以等宽,且无法直接设置两者宽度。

2017-09-05 5 06 45

一般情况下,好像没什么问题,直接设置flexGrow即可。

line: {
  flexGrow: 1,
  height: 4,
  backgroundColor: '#BDC6DB'
}

但问题是虚线的实现采用了很 trick 的方法:line 内部排列一个个小 Viewline 本身背景色透明。

这时有个严重问题,右侧虚线被撑开了,实现和虚线不再是等分的。

所以,在 dom 内部内容宽度可能很大时,怎么实现等分?

line: {
  flexGrow: 1,
  flexShrink: 1,
  flexBasis: 0,
  height: 4,
  backgroundColor: '#BDC6DB'
}

以上即可解决:

flexBasis: 0 保证宽度计算都是从 0 开始,此时内容的宽度的影响就被去除; flexGrow: 1,flexShrink: 1, 保证始终等分。

慕烟庭风 2022-05-03 15:16:09

4. TouchableHightlight 必须注册 onPress 回调,否则不显示 underlayColor

详情见: facebook/react-native#14908

<TouchableHighlight underlayColor="red">
</TouchableHighlight>

如果不注册 onPress 回调,TouchableHighlight看起来手指按压时无反应,原因即:

_showUnderlay: function() {
-    if (!this._isMounted || !this._hasPressHandler()) {
+    if (!this._isMounted) {
        return;
      }
胡大本事 2022-05-03 03:02:09

3. Android 上字体偏下的问题

2017-04-07 1 38 59

2017-04-07 2 34 20

第一张是iOS的,第二张是android的,可以看见,第二张的border和文字明显贴的过近。

inspect相应元素,可以发现,是android上文字在垂直方向上偏下。

解决:

{
   paddingBottom: 4,
   fontSize: 14,
   lineHeight: 14,
   height: 14
}

paddingBottom保证不会贴在一起,容忍android上损失一点还原度...

内心旳酸楚 2022-05-01 23:18:46

2. Androidoverflow 默认 hidden 且无法改变

即超出容器部分被裁切,细节可看The overflow style property defaults to hidden and cannot be changed on Android

iOS 可以支持 overflow: visible等其它值,这点需注意。

~没有更多了~

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文