2017-09-05 68 views
0

我试图保持在屏幕上水平居中像这样一个观点:无法<TextInput>光标定位到屏幕的水平中心做出反应原住民尺寸

<Animated.View style={{ 
    position: 'absolute', 
    top: '35%', 
    width: '30%', 
    marginLeft: this.state.center, 
    }}> 

    <TextInput/> 

</Animated.View> 

它基本保持集中在用户键入的<TextInput/>通过在键入时将marginLeft值减小固定量并在删除时增加marginLeft。当<TextInput/>为空时,闪烁的光标在屏幕中保持水平居中。

我有那么问题是,当center = Dimensions.get('window').width/2应用到<Animated.View>marginLeft样式属性,它是不完全在屏幕的中心点。这是大约3.8新闻部偏离中心的权利。

有人会知道什么可能导致这个误差? Dimensions.get('window').width返回看起来确切的浮点数。 它可能是引入舍入错误的除法操作吗?

回答

0

毕竟这不是问题Dimensions。在这种特殊情况下,<TextInput/>似乎自动将其自己的位置调整为近似值PixelRatio.get() dpi。接下来我需要抵消的是游标宽度本身,它是1

因此,要获得屏幕的“中心点”为<TextInput/>光标是:

var windowCenterPoint = (Dimensions.get('window').width/2) - PixelRatio.get() - 1;