React Native获取组件位置和大小
RN页面中定位或滚动操作时,需要获取元素的大小和位置信息,有几种常用的方法
获取设备屏幕的宽高
import {Dimensions} from 'react-native';
var {height, width} = Dimensions.get('window');
获取元素的大小和位置信息
1. onLayout事件属性
<View onLayout={this._onLayout}><View>
_onLayout = (e) => {
let {x,y,width,height} = e.nativeEvent.layout
}
// or
import {NativeModules} from 'react-native'
_onLayout = (e) => {
NativeModules.UIManager.measure(e.target, (x, y, width, height, pageX, pageY)=>{
// todo
})
}
x和y表示左上角的顶点坐标,相对于屏幕的左上角(0,0)
2. 元素自带measure方法
在元素上添加ref
<View ref={(ref) => this.chatView = ref}></View>
在componentDidMount方法里添加一个定时器,定时器里再进行测量,否则拿到的数据为0
componentDidMount(){
setTimeOut(() => {
this.refs.chatView.measure((x,y,width,height,pageX, pageY) => {
//todo
})
});
}
3. 使用UIManager measure方法
import {
UIManager,
findNodeHandle
} from 'react-native' handleClick = () => {
UIManager.measure(findNodeHandle(this.buttonRef),(x,y,width,height,pageX,pageY)=>{
// todo
}) }
在组件上添加引用
<TouchableButton ref={(ref)=>this.buttonRef=ref} onPress={this.handleClick}/>
React Native获取组件位置和大小的更多相关文章
- React Native 获取组件(Component)在屏幕上的位置
年后主客户端的需求以及老的业务迁移RN,现在疯狂的在学RN.在迁移需求的时候遇到需要获取组件在屏幕上的绝对位置.页面如下: 就需要展开的时候获取sectionHeader(默认排序)在屏幕上的具体位置 ...
- RN页面获取组件位置和大小的方法
在RN的页面布局和操作中,有时需要获取元素的大小和位置信息,本文从网上抄袭了几个常用方法,以备不时之需. 首先是获取设备屏幕的宽高 import {Dimensions} from 'react-na ...
- react native获取组件高度,宽 度等
import React,{Component} from 'react'import { View, Text, Image, StyleSheet, TouchableHighlight, Tou ...
- React Native交互组件之Touchable
React Native交互组件之Touchable:只要在组件外面包一个Touchable组件就可以实现点击交互. TouchableHighlight:高亮触摸 当点击时,组件的透明度会改变,可以 ...
- [RN] React Native 获取地理位置
React Native 获取地理位置 实现原理: 1.用 navigator.geolocation.getCurrentPosition 获取到坐标信息 2.调用 高德地图 接口,解析位置数据 ...
- [RN] React Native 获取验证码 按钮
React Native 获取验证码 按钮 效果如图: 实现方法: 一.获取验证码 按钮组件 封装 CountDownButton.js "use strict"; import ...
- React Native 之 组件化开发
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native的组件ListView
React Native的组件ListView类似于iOS中的UITableView和UICollectionView,也就是说React Native的组件ListView既可以实现UITableV ...
- Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)
通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...
随机推荐
- html技巧
1.防止盒子透出的解决办法 overflow:hidden:float不为none:display:inline-block: position不为static&relative ...
- 基于SVM.NET的验证码识别算法实现
工作之余,对这个算法做了一些研究,并成功对验证码进行了识别,对普通验证码识别率在90%左右,识别速度相当快,已基于此做过一些自动查询.提交程序(例如投票.发帖等) ,还上过淘宝店,赚过一笔外快,现将相 ...
- IntelliJ Idea编译报错:javacTask: 源发行版 1.8 需要目标发行版 1.8
解决办法: 1.Project Settings-Modules,选择项目,选择language level 8 2.选中项目,右击选择Maven-->Reimport, 再次编译. 3.Fil ...
- Redis(一):centos下安装。
yum install gcc-cc++ wget http://download.redis.io/releases/redis-4.0.2.tar.gz .tar.gz /usr/local cd ...
- C# winfrom Datagridview表头样式和选中样式
Griscolor是表格线的颜色 表头的样式修改如下图: 选中某一行的样色设置
- 实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false retur ...
- APRoundedButton
APRoundedButton https://github.com/elpsk/APRoundedButton 效果: 源码: APRoundedButton.h // // Created by ...
- Linux中如何安装loadgenerator
/* 1. 到官方网站到HP官网下载Load Generator 安装文件 _Load_Generator_11.00_T7330-15010.iso或者其它网站下载loadrunner-11-loa ...
- ZT 匿名内存映射
mmap函数使用 分类: Linux/Unix C/C++ 2008-01-22 17:03 6089人阅读 评论(1) 收藏 举报 unix编程null网络 UNIX网络编程第二卷进程间通信对mma ...
- java内部类之成员内部类实例
第一个是如何实现同时继承两个类 public class MultiExtendsDemo { public static void main(String[] args) { // TODO Aut ...