2017-09-05 29 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;