react-native-icons パッケージを使用して、ボタン付きのアイコンを含めています。サンプルコードは フォルダーの例 にリストされています。 ViewでonPress
を達成しようとしていますが、react-nativeには<View>
コンポーネント用のonPress
関数がありません。
<TouchableHighlight>
を使用してみましたが、内部に<Icon>
と<Text>
のような2つではなく、1つの子要素しか含めることができません。
また、<Text>
を<Icon>
および<Text>
とともに使用しようとしましたが、<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>
react-native-icons モジュールを使用している場合、ビューでアイコンとテキストの両方をラップしてから、その上でTouchableHighlightを使用できます。何かのようなもの:
<TouchableHighlight onPress={()=>{}}>
<View>
<Icon ... />
<Text ... />
</View>
</TouchableHighlight>
ただし、比較的新しいモジュール react-native-vector-icons を使用すると、非常に簡単になります。あなたは次のようにすることができます:
<Icon name="facebook" style={styles.icon}>
<Text style={styles.text}>Login with Facebook</Text>
</Icon>
なんとかこうやってやった。もっと良い方法があるのだろうか。
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>