【发布时间】:2020-04-30 14:35:58
【问题描述】:
我有一个图像背景,我想在它上面写一些可在屏幕上任意位置拖动的文本,现在我正在使用“react-native-draggable”组件来完成这项工作。
我的目标是在释放拖动后找到文本的起始位置(X Y 坐标)。 例如:文本是“Hello world”,如果我一直向上拖动并完全向左,那么我需要知道 X Y = 0, 0 的值,如果我水平拖动该文本而不改变 Y 那么 X,Y =说 100,0
我读过 onLayout 可以做,但我刚开始玩 react native 时无法让它工作。
这是我的代码
import React from 'react';
import { StyleSheet, Text, View, ImageBackground, StatusBar, Button, Dimensions,Image } from 'react-native';
import Draggable from 'react-native-draggable';
export default class App extends React.Component {
constructor(props) {
super(props);
this.maxWidth = Dimensions.get('window').width - 20;
this.maxHeight = Dimensions.get('window').height - 40;
this.state = {};
}
onDragReleaseCustom(value) {
console.log('drag release', value.nativeEvent);
console.log('drag release', value.nativeEvent);
}
onLayout = (e) => {
console.log("working gere");
console.log(e.nativeEvent);
console.log("widht,height",e.nativeEvent.layout.x,e.nativeEvent.layout.y)
}
render() {
return (
<>
<StatusBar hidden />
<View style={styles.container}>
<ImageBackground source={require('./assets/bg1.jpg')} style={styles.backgroundImage}>
</ImageBackground>
</View>
<Draggable
minX = {15}
minY = {15}
maxX = {this.maxWidth}
maxY = {this.maxHeight}
x = {30}
y = {112}
onDragRelease = {this.onLayout()}>
<View >
<Text style={styles.customText}>Hi this is an example </Text>
</View>
</Draggable>
<View style={styles.buttonStyle}>
<Button color="#f00fff" title="Save"></Button>
</View>
</>
);
}
}
有人可以提出更好的方法来实现这一点。非常感谢任何帮助。
【问题讨论】:
标签: javascript reactjs react-native react-hooks