React Native 即使设置了宽度,TouchableOpacity也会占用所有可用空间

b4lqfgs4  于 2022-11-25  发布在  React
关注(0)|答案(2)|浏览(160)

我已经按照这篇文章-React Native flex-box align icon and text做了一个按钮,标题如下:

<View style={styles.sectionHeaderContainer}>

  <Text style={styles.heading}>Work</Text>

  <TouchableOpacity
  style = {{width: 40, flex: 1, flexDirection: 'row', justifyContent: 'center', alignItems: 'center'}}
  onPress={() => {
    this.setState(previousState => {
      Alert.alert('You tapped the button!')
    });
  }}>
    <Image source={addIcon}/>
    <Text style={styles.tertirayTitleDark}>Add Work</Text> 
  </TouchableOpacity>

</View>

样式表如下所示:

sectionHeaderContainer: {
    flexDirection: 'row',
    justifyContent: 'space-between',
    alignItems: 'flex-end',
    paddingHorizontal: "6%", 
    paddingTop: "12%",
  },
  heading: {
    fontSize: TITLE,
    fontWeight: 'bold',
    color: THEME_COLOR,
    backgroundColor:'transparent',
  },
  tertirayTitleDark: {
    fontSize: CONTENT_LARGE,
    fontWeight: 'bold',
    color: COLOR_DARK_PRIMARY,
  },

但是,该按钮占用了标题留下的所有可用水平空间:

我已经尝试了许多不同的设置,但仍然不能找出我做错了什么。

vaqhlq81

vaqhlq811#

只要删除flex:1。当你把flex:1添加到touchableOpacity的样式中时,你就是在告诉它占用所有可用的空间,就像提供的图片一样。希望这能有所帮助!

tf7tbtn2

tf7tbtn22#

这个公认的答案对我来说不起作用,相反,我必须用一个给定宽度的View来 Package 整个TouchableOpacity,即:

<View style={{width: yourDesiredWidth}}>
    <TouchableOpacity>
        // ...
    </TouchableOpacity>
</View>

相关问题