当前位置: 首页 > 知识库问答 >
问题:

在React Native中获取视图的大小

能可人
2023-03-14

是否有可能获得某个视图的大小(宽度和高度)?例如,我有一个显示进度的视图:

<View ref='progressBar' style={{backgroundColor:'red',flex:this.state.progress}} /> 

我需要知道视图的实际宽度来正确对齐其他视图。这有可能吗?

共有3个答案

莘钧
2023-03-14

基本上,如果要设置大小并进行更改,请将其设置为布局上的状态,如下所示:

import React, { Component } from 'react';
import { AppRegistry, StyleSheet, View } from 'react-native';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: 'yellow',
  },
  View1: {
    flex: 2,
    margin: 10,
    backgroundColor: 'red',
    elevation: 1,
  },
  View2: {
    position: 'absolute',
    backgroundColor: 'orange',
    zIndex: 3,
    elevation: 3,
  },
  View3: {
    flex: 3,
    backgroundColor: 'green',
    elevation: 2,
  },
  Text: {
    fontSize: 25,
    margin: 20,
    color: 'white',
  },
});

class Example extends Component {

  constructor(props) {
    super(props);

    this.state = {
      view2LayoutProps: {
        left: 0,
        top: 0,
        width: 50,
        height: 50,
      }
    };
  }

  onLayout(event) {
    const {x, y, height, width} = event.nativeEvent.layout;
    const newHeight = this.state.view2LayoutProps.height + 1;
    const newLayout = {
        height: newHeight ,
        width: width,
        left: x,
        top: y,
      };

    this.setState({ view2LayoutProps: newLayout });
  }

  render() {
    return (
      <View style={styles.container}>
        <View style={styles.View1}>
          <Text>{this.state.view2LayoutProps.height}</Text>
        </View>
        <View onLayout={(event) => this.onLayout(event)} 
              style={[styles.View2, this.state.view2LayoutProps]} />
        <View style={styles.View3} />
      </View>
    );
  }

}


AppRegistry.registerComponent(Example);

您可以创建更多的变化如何修改它,通过在另一个组件中使用它,该组件具有另一个视图作为包装器,并创建一个onResderRelase回调,该回调可以将触摸事件位置传递到状态,然后可以将其作为属性传递给子组件,可以通过放置{[样式来覆盖onLayout更新的状态。View2,this.state.view2LayoutProps,this.props.touchEventTopLe]}等等。

宿镜
2023-03-14

这是唯一对我有用的东西:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Image
} from 'react-native';

export default class Comp extends Component {

  find_dimesions(layout){
    const {x, y, width, height} = layout;
    console.warn(x);
    console.warn(y);
    console.warn(width);
    console.warn(height);
  }
  render() {
    return (
      <View onLayout={(event) => { this.find_dimesions(event.nativeEvent.layout) }} style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.android.js
        </Text>
        <Text style={styles.instructions}>
          Double tap R on your keyboard to reload,{'\n'}
          Shake or press menu button for dev menu
        </Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

AppRegistry.registerComponent('Comp', () => Comp);
华炜
2023-03-14

从React Native 0.4.2开始,视图组件有一个onLayoutprop。传入接受事件对象的函数。事件的nativeEvent包含视图的布局。

<View onLayout={(event) => {
  var {x, y, width, height} = event.nativeEvent.layout;
}} />

每当调整视图大小时,也将调用onLayout处理程序。

主要的警告是,onLayout处理程序在安装组件一帧后首先被调用,因此您可能希望在计算布局之前隐藏UI。

 类似资料:
  • 问题内容: 我在用 这些代表从我的画廊或我的相机中选择图像。那么,选择图像后如何获得图像文件的大小? 我想使用这个: 但是在这里我需要一个路径,但是如果没有路径,如何仅通过图像文件就能获得路径呢? 问题答案: 请检查google的1 kb到1000字节。 https://www.google.com/search?q=1+kb+%3D+how+many+bytes&oq=1+kb+%3D+how+

  • 我在我的项目中实现了一个calendarview,我可以获取月份、月份和年份,但我找不到任何方法来获取星期几,我的代码是这样的: 当我在日历中选择一天时,我需要得到一周的时间,我试图得到答案,但我找不到。 对不起我的英语。

  • 问题内容: 我正在尝试从烧瓶视图获取url参数: 如何从视图中获取? 问题答案: 你可以使用以下方法检索查询字符串变量 要么 你要接收的查询字符串中的变量在哪里。

  • 问题内容: 我对此事进行了一些研究,但还没有解决方案。我想得到的是视图中的列级依赖关系。所以,假设我们有一个这样的表 和这样的观点: 我想要的是这样的结果: 我已经尝试过函数,但是对于视图来说总是为0。 无论是过时的还是过时的,都是如此。 那么,我会错过某些事情吗?还是做不到? 编辑1 :我试图使用DAC来查询此信息是否存储在系统基本表中的某个位置,但是找不到 问题答案: 此解决方案只能部分回答您

  • 问题内容: 我正在使用reportlab pdfgen创建PDF。在PDF中,有一个由创建的图像。为此,我要么需要图像的URL,要么在视图中需要图像的路径。我设法建立了URL,但是如何获取图像的本地路径? 我如何获得网址: 问题答案: 既然这是Google的最佳结果,我想我应该添加另一种方法来做到这一点。我个人更喜欢这一点,因为它将实现留给了Django框架。

  • 问题内容: 问题很简单。如何在jQuery中获取div的背景图像大小(宽度和高度)。可能吗 我认为这可以工作: 我收到的错误消息是这不是一个函数。 问题答案: 您将必须执行以下操作: 由于代码的简单性,您不能在背景图片的URL中使用括号或引号。但是,可以扩展代码以获得更多支持。我只是想传达一般想法。