React Native 画一条漂亮的分割线

背景

  • 在App开发中,我们经常会用到分割线,比如FlatList 中我们会用到ItemSeparatorComponent作为行与行之间的分隔线组件。通常制作分割线的思路是,我们可以使用View组件,设置它的高度为1或者0.5,然后给它设置一个背景颜色。或者设置border,border的宽度为1或者0.5等方法。
  • 通过这种方式设置的分割线我们经常会发现有一些问题,比如设置View高度为1。我们仔细观察后会发现,在一个列表中,这些分割线有粗有细,显的不均匀。而且分割线较粗,导致列表不美观。
  • 我们也可以设置高度为0.5,或者使用“StyleSheet. hairlineWidth”获取最细的线的值,这样分割线比较细,但是,这样会导致列表中分割线有时不展示。

如何解决?

  • 方法其实非常的简单,就是当我们设置分割线的时候,需要给分割线组件设置一个margin,margin值为你分割线的宽度值就可以,这其实算是React Native的一个bug,然而FaceBoook却迟迟没有解决。

简单的封装一下_

import React, { PureComponent } from 'react'
import {
  View,
  StyleSheet
} from 'react-native'

class SpliteLine extends PureComponent {
  render () {
    let { lineHeight, color, style, contentStyle } = this.props
    return (
      <View style={{ backgroundColor: 'white', ...contentStyle }}>
        <View style={[{ height: 0, borderTopWidth: lineHeight, borderColor: color, opacity: 0.7, margin: StyleSheet.hairlineWidth }, style]} />
      </View>
    )
  }
}

SpliteLine.defaultProps = {
  lineHeight: StyleSheet.hairlineWidth,
  color: '#bdbdbd',
  contentStyle: {}
}

export default SpliteLine
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,225评论 1 45
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 5,552评论 0 6
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,295评论 0 8
  • 在上一章节,我们讨论了元素显示的基本特点。而在这一章,我们将看到css属性是如果改变元素显示外观的,这包括了pad...
    秋名山车神12138阅读 4,394评论 0 0

友情链接更多精彩内容