首页 > 解决方案 > ReactNative 抽屉导航自定义页脚

问题描述

我有一个抽屉导航,我试图在底部放置一个页脚,其中包含其他信息(应用程序版本和注销链接)..

这是我的导航容器:

      <NavigationContainer style={styles.drawer}>
    <Drawer.Navigator style={styles.drawer} drawerContent={props => <CustomDrawerContent {...props} />}>

      <Drawer.Screen name="Home" component={Home}
        options={{
          drawerIcon: ({ focused, size }) => (
            <Image source={require('./assets/icons/sidemenu-icon-account.png')} style={[{ height: 25, width: 25 }]} />
          )
        }} />

      <Drawer.Screen name="LoginScreen" component={LoginScreen}
        options={{
          drawerIcon: ({ focused, size }) => (
            <Image source={require('./assets/icons/sidemenu-icon-account.png')} style={[{ height: 25, width: 25 }]} />
          )
        }} />
    </Drawer.Navigator>
  </NavigationContainer>);

这是自定义内容:

    function CustomDrawerContent(props) {
  return (
    
    <DrawerContentScrollView style={styles.drawer}  {...props}>
      <View style={styles.logoContainer}>
        <Image source={require("./assets/logo.png")} style={{ height: "100%", width: "100%", resizeMode: "contain" }} />
      </View>

      <SafeAreaView style={styles.container}>
        <View style={{flex: 1 }}>
              <DrawerItemList {...props} />
        </View>
        <TouchableOpacity style={{backgroundColor: 'red', flexDirection: 'row', alignItems: 'center'}}>
              <Text>Log Out</Text>
        </TouchableOpacity>
        </SafeAreaView>
      </DrawerContentScrollView>
      
  );
}

如何将注销链接推送到底部固定? 在此处输入图像描述

款式:

 const styles = StyleSheet.create({
  img: {
    height: 40,
    width: 40,
    marginTop: 6,
    justifyContent: 'center',
    textAlignVertical: 'center',
  },

  logout : {
    backgroundColor: 'red' ,
    bottom: 0,
    position: 'absolute'
  },

  logoContainer: {
    height: 140,
    width: "80%",
    marginTop: 20,
    marginBottom: 20,
    alignSelf: "center",
  },
  drawer: {
    backgroundColor: 'yellow',
    flex:1

  },
  labelBottom : {
    position: 'relative',
  bottom:0
  },

  redBottom: {
  },
  scrollView: {
    backgroundColor: Colors.lighter,
  },
  engine: {
    position: 'absolute',
    right: 0,
  },
  body: {
    backgroundColor: Colors.red,
  },
  sectionContainer: {
    marginTop: 32,
    paddingHorizontal: 24,
  },
  sectionTitle: {
    fontSize: 24,
    fontWeight: '600',
    color: Colors.black,
  },
  sectionDescription: {
    marginTop: 8,
    fontSize: 18,
    fontWeight: '400',
    color: Colors.dark,
  },
  highlight: {
    fontWeight: '700',
  },
  footer: {
    color: Colors.dark,
    fontSize: 12,
    fontWeight: '600',
    padding: 4,
    paddingRight: 12,
    textAlign: 'right',
  },

标签: react-nativenavigation-drawer

解决方案


您可以为 TouchableOpacity 使用 marginTop: 'auto' 样式,也可以将 contentContainerStyle 用于滚动视图

function CustomDrawerContent(props) {
  return (
    <DrawerContentScrollView contentContainerStyle={styles.drawer} {...props}>
 <View style={styles.logoContainer}>
        <Image source={require("./assets/logo.png")} style={{ height: "100%", width: "100%", resizeMode: "contain" }} />
      </View>
      <SafeAreaView style={{flex:1}}>
        <View>
          <DrawerItemList {...props} />
        </View>
        <View style={{ marginTop: 'auto' }}>
        <TouchableOpacity
          style={{
            backgroundColor: 'red',
            flexDirection: 'row',

          }}>
          <Text>Log Out</Text>
        </TouchableOpacity>
         </View>
      </SafeAreaView>
    </DrawerContentScrollView>
  );
}

推荐阅读