我正在创建一个简单的操作按钮( float 按钮)
这正在工作:
<View style={{
width: this.props.size,
height: this.props.size,
borderRadius: this.props.size / 2,
backgroundColor: '#ee6e73',
position: 'absolute',
bottom: 10,
right: 10,
flexDirection:'row'
}}>
<Text>
+
</Text>
</View>
这不是 :
<TouchableOpacity
onPress={()=>{
}} >
<View style={{
width: this.props.size,
height: this.props.size,
borderRadius: this.props.size / 2,
backgroundColor: '#ee6e73',
position: 'absolute',
bottom: 10,
right: 10,
flexDirection:'row'
}}>
<Text>
+
</Text>
</View>
</TouchableOpacity>
只需用TouchableOpacity包装,然后我的按钮就不会出现任何错误。
React 0.1.7,Android
然后,我尝试将样式从“ View ”更改为“TouchableOpacity”,这是可行的
<TouchableOpacity
onPress={()=>{
}}
style={{
width: this.props.size,
height: this.props.size,
position: 'absolute',
borderRadius: this.props.size / 2,
backgroundColor: '#ee6e73',
bottom: 10,
right: 10,
}}>
<Text>
+
</Text>
</TouchableOpacity>
谁能解释我为什么?
React Native文档说
[https://facebook.github.io/react-native/docs/touchableopacity.html][1]
这意味着我包装了原始 View ,并且可以按预期工作,但事实并非如此。
最佳答案
以我的经验,TouchableOpacity在absolute
定位中不能很好地工作。也许您将其删除,则onPress将再次起作用。
另外请注意,首先渲染什么元素以及最后渲染什么是极其重要的。
例如,如果您这样做:
<View>
<TouchableOpacity style={{position:'absolute'}} onPress={()=>
{console.log("It works or not?")}}>
</TouchableOpacity>
<Text style={styles.aStyle}>
Some text bla bla......
</Text>
</View>
很有可能将Text呈现在
TouchableOpacity
的顶部,因此您将无法使onPress
正常工作。然后,由于位置是绝对的,因此您所要做的就是将其呈现为View的最后一个子级:
<View>
<Text style={styles.aStyle}>
Some text bla bla
</Text>
<TouchableOpacity style={{position:'absolute'}} onPress={()=>
{console.log("It works or not?")}}>
</TouchableOpacity>
</View>
关于android - React Native,TouchableOpacity包装的 float 按钮什么都没有,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34139687/