您发布的 JSFiddle 示例使用 CSS 边框创建圆圈border-radius
使其呈圆形。不过,我们可以在react-native中做几乎同样的事情borderRadius
在react-native中只能是固定数字而不是百分比(编辑:此限制特定于打字稿,因为borderRadius
属性有类型number
。百分比字符串在运行时起作用)。
您可以根据需要调整此代码,但这将完成工作。您可以使用IconFA
and CircleBorder
作为两个单独的嵌套组件,但我还制作了一个组件IconInCircle
将两者结合起来。
const IconInCircle = ({ circleSize, borderWidth = 2, borderColor = 'black', ...props}) => (
<CircleBorder
size={circleSize}
borderWidth={borderWidth}
borderColor={borderColor}
>
<IconFA {...props} />
</CircleBorder>
);
const CircleBorder = ({ size, borderWidth, borderColor, children }) => (
<View
style={{
width: size,
height: size,
borderRadius: 0.5 * size,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
borderColor,
borderWidth,
}}>
{children}
</View>
);
The IconInCircle
组件需要三个特定于边框的属性:circleSize
, borderWidth
, and borderColor
。所有其他道具都传递到IconFA
子组件。
基本上我们正在做的是将图标放置在固定大小的内部View
具有圆形边框和居中的内容。
现在我们可以像这样使用它:
<IconInCircle
name="plus"
size={30}
color="black"
style={styles.thumbnail}
borderWidth={1}
circleSize={50}
/>
世博链接 https://snack.expo.io/@lindapaiste/022490