layout - React Native 是否有类似relativelayout 的东西?

标签 layout react-native android-viewpager android-relativelayout react-native-flexbox

就我而言,我想要一个全屏 View 页面,顶部有一个按钮。在 Android 中这很容易。

这是示例代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent >

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="15dp"
        android:src="@drawable/button_help" />
</RelativeLayout>

但是在 rn 中,flexbox 的作用似乎类似于 Android 中的 Linearlayout,父级的 sibling 不能相互重叠。我认为这在移动开发中没有意义,因为多层在移动开发中很常见。我通过使用 position:absolute 解决了这个问题。该解决方案的缺点是如果使用绝对位置,alignItems 不起作用,因此您需要使用另一个技巧来使按钮在水平线中居中。还有更好的办法吗? RN 会支持像RelativeLayout 这样的东西吗?我认为Relativelayout是进行应用程序开发布局的非常有效的方法。

这是我的 RN 代码

render() {
        var {height, width} = Dimensions.get('window');
        console.log("rntest width " + width);
        var mywidth = width;
        return(
        <View
          style={styles.viewPager}>
            <IndicatorViewPager
            style={styles.viewPager}
            initialPage={0}
            onPageScroll={onPageScroll}
            onPageSelected={onPageSelected}>
              <View
                style={styles.viewPager}>
                <Image
                  style={styles.viewPager}
                  source={require('./img/1.jpg')}
                  resizeMode='cover'/>
              </View>
              <View
                style={styles.viewPager}>
                <Image
                  style={styles.viewPager}
                  source={require('./img/2.jpg')}
                  resizeMode='cover'/>
              </View>
              <View
                style={styles.viewPager}>
                <Image
                  style={styles.viewPager}
                  source={require('./img/3.jpg')}
                  resizeMode='cover'/>
              </View>
            </IndicatorViewPager>
            <TouchableHighlight onPress={onPressButton} style={{width: mywidth, height: 103,  
              position:'absolute', left: 0, bottom: 0, alignItems: 'center'}}>
              <Image
              style={{width: 103, height: 103}}
              source={require('./img/voice_run.png')}
             />
            </TouchableHighlight>
         }
        </View>
        );

enter image description here

最佳答案

position:absolute不是技巧。这是正常的解决方案。将绝对 View 视为其他层。因此,前一层中定义的 alignItems 不会影响当前层的子层。

您不需要使用维度。如果您需要全宽按钮,您只需将 right: 0 添加到 TouchableHighlight 即可。

Flexbox 并不理想,但它足够简单且功能强大。我认为很快不会推出其他内容。

关于layout - React Native 是否有类似relativelayout 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825491/

相关文章:

java - 如何使用这样的自定义选项卡制作 Viewpager?

java - 如何设置SWT标签填充?

layout - Bootstrap 4.0 网格系统布局不起作用

css - 如何使用 wavemaker 设置页面居中布局

ios - 如何为公司员工部署公司React-Native应用程序?

javascript - 如何在React Native中禁用YouTube视频末尾的相关视频

reactjs - 如何在 Reactjs 中一次调用上传多个图像文件

android - 我怎样才能在 NestedScrollView 中使用 RecyclerView 工作 ViewPager

java - ScrollView 不会在 ViewPager 中滚动

java - 如何在 FragmentActivity 中使用 putExtra