我正在尝试创建一个带有加号图标的简单浮动操作栏按钮,并且在某些边缘情况下无法将“加号”真正居中。我只是在 a 中使用 '\uFF0B' <Text>
,但尝试切换到react-native-vector-icons
,却发现他们也在使用字体而不是图像来支持<Icon>
实例,而且我的问题似乎仍然存在。
大多数屏幕和设备上的情况都很好,但在某些情况下,用户报告加号图标没有完全居中。我有一个假设,它可能涉及用户的可访问性选项,使应用程序中的字体大小超出父视图的大小。无论如何,我可以通过设置fontSize
大于lineHeight
. 假设这是问题 -
您如何在 a 的视图区域中居中单个字形<Text>
(或者<Icon>
,因为它源自<Text>
),即使fontSize
可能比<Text>
'slineHeight
甚至整体大得多height
?
在下面的示例中,“+”字体大小正好是行高的两倍,因此加号位于视图区域右上角的中心,就好像它期望在一个 112dp 的框中一样x 112dp;但我希望它以 56dp x 56dp 框的中心为中心,加号的手臂被裁剪。样式属性的组合似乎没有影响它,而只是控制<Icon>
其父级中的位置。
目前:
一般:
对于超大字体:
代码:
<View style={s.fabStyle}>
<TouchableOpacity onPress={()=>{this.onPlus()}}>
<Icon name="plus" style={s.fabText} />
</TouchableOpacity>
</View>
...
const s = StyleSheet.create({
fabStyle: {
position: 'absolute',
right: 16,
bottom: 16,
borderRadius: 28,
width: 56,
height: 56,
backgroundColor: styleConstants.color.primary,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
textAlign: 'center',
},
fabText: {
position: 'relative',
left: 0,
top: 0,
right: 0,
bottom: 0,
fontSize: 112,
color: '#fff',
textAlign: 'center',
lineHeight: 56,
width: 56,
height: 56,
},
});