如何使用react-native中的图标来建模按钮

Piy*_*han 15 javascript ios reactjs react-native

我正在使用react-native-icons包来包含带按钮的图标.他们在示例文件夹中列出了示例代码.我正在尝试onPress在View 上实现但事实证明react-native没有组件onPress功能<View>.

我尝试使用<TouchableHighlight>,但只能有一个子元素在它不是两个像<Icon><Text>里面.

我也试过使用<Text>with <Icon><Text>inside但内部<Text>只能有<Text>元素.

有没有人有幸获得类似的功能?

带图标的示例按钮

<View onPress={this.onBooking} 
  style={styles.button}>
  <Icon
    name='fontawesome|facebook-square'
    size={25}
    color='#3b5998'
    style={{height:25,width:25}}/>
  <Text style={styles.buttonText}>Sign In with Facebook</Text>
</View>
Run Code Online (Sandbox Code Playgroud)

小智 29

如果您使用的是react-native-icons模块,则可以尝试在视图中包装图标和文本,然后在其上使用TouchableHighlight.就像是:

<TouchableHighlight onPress={()=>{}}>
     <View>
         <Icon ... />
         <Text ... />
     </View>
 </TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)

但是如果你使用一个相对较新的模块react-native-vector-icons,这将非常容易.你可以这样做:

<Icon name="facebook" style={styles.icon}>
   <Text style={styles.text}>Login with Facebook</Text>
</Icon>
Run Code Online (Sandbox Code Playgroud)

  • 我像这样使用TouchableOpacity:`<TouchableOpacity style = {} onPress = {()=> {}} <Icon ... /> <Text ... /> </ TouchableOpacity>` (2认同)

Piy*_*han 8

我设法做到这一点.我想知道是否有更好的方法.

var styles = StyleSheet.create({
  btnClickContain: {
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'center',
    alignItems: 'stretch',
    alignSelf: 'stretch',
    backgroundColor: '#009D6E',
    borderRadius: 5,
    padding: 5,
    marginTop: 5,
    marginBottom: 5,
  },
  btnContainer: {
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'center',
    alignItems: 'stretch',
    alignSelf: 'stretch',
    borderRadius: 10,
  },
  btnIcon: {
    height: 25,
    width: 25,
  },
  btnText: {
    fontSize: 18,
    color: '#FAFAFA',
    marginLeft: 10,
    marginTop: 2,
  }
});

<TouchableHighlight
  onPress={this.onBooking} style={styles.btnClickContain}
  underlayColor='#042417'>
  <View
    style={styles.btnContainer}>
    <Icon
      name='fontawesome|facebook-square'
      size={25}
      color='#042'
      style={styles.btnIcon}/>
    <Text style={styles.btnText}>Sign In with Facebook</Text>
  </View>
</TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)


Jos*_*das 6

世博一个Button组件,你想要做什么,造型都:

<FontAwesome.Button name="facebook" backgroundColor="#3b5998" onPress={...}>
  Sign in with Facebook
</FontAwesome.Button>
<FontAwesome.Button name="twitter" backgroundColor="#1da1f2" onPress={...}>
  Sign in with Twitter
</FontAwesome.Button>
Run Code Online (Sandbox Code Playgroud)

在 iOS 模拟器中运行的样子:

在此处输入图片说明

如果您不使用Expo,请研究源代码并创建一个类似的组件。