apply from: “../../node_modules/react-native-vector-icons/fonts.gradle”
app/build.gradle
Example to Use React Native Vector Icons
Vector Icons
React Native Vector Icons are very popular icons in React Native. In this post, we will see Example to Use Vector Icons in React Native using react-native-vector-icons. Vector Icons are perfect for buttons, logos and nav/tab bars. Vector Icons are easy to extend, style and integrate into your project.
You can use Vector Icons very anywhere easily. You can visit the react-native-vector-icons directory to find a variety of icons.
List of Vector Icons
Here is the list of icons category available in React Native Vector Icons:
- AntDesign by AntFinance (297 icons)
- Entypo by Daniel Bruce (411 icons)
- EvilIcons by Alexander Madyankin & Roman Shamin (v1.10.1, 70 icons)
- Feather by Cole Bemis & Contributors (v4.21.0, 279 icons)
- FontAwesome by Dave Gandy (v4.7.0, 675 icons)
- FontAwesome 5 by Fonticons, Inc. (v5.7.0, 1500 (free) 5082 (pro) icons)
- Fontisto by Kenan (v3.0.4, 615 icons)
- Foundation by ZURB, Inc. (v3.0, 283 icons)
- Ionicons by Ben Sperry (v4.2.4, 696 icons)
- MaterialIcons by Google, Inc. (v3.0.1, 932 icons)
- MaterialCommunityIcons by MaterialDesignIcons.com (v3.6.95, 3695 icons)
- Octicons by Github, Inc. (v8.4.1, 184 icons)
- Zocial by Sam Collins (v1.0, 100 icons)
- SimpleLineIcons by Sabbir & Contributors (v2.4.1, 189 icons)
How to use Vector Icons in React Native?
To use Vector Icons you have to follow the below steps:
- Create a new React Native project
- Install the Dependency (react-native-vector-icons)
- Install CocoaPods
- Importing Icon Files in Android
- Importing Icon Files in iOS
- Lastly, Import icon component in your project and start using it
How to use Icon Component?
For the Vector Icons, we have to import react-native-vector-icons
dependency which will provide two components:
1. Icon Component
You can use this Icon component to create Icons. Prop “name” will render the icon in Android and IOS.
<Icon name="rocket" size={30} color="#900" />
Prop | Description | Default |
---|---|---|
size | Size of the icon can also be passed as fontSize in the style object. | 12 |
name | What icon to show, see Icon Explorer app or one of the links above. | None |
color | The color of the icon. | Inherited |
2. Icon.Button Component
A convenience component for creating buttons with an icon on the left side.
<Icon.Button name="facebook" backgroundColor="#3b5998" onPress={this.loginWithFacebook}> Login with Facebook</Icon.Button>
Prop | Description | Default |
---|---|---|
color | Text and icon color, use iconStyle or nest a Text component if you need different colors. | white |
size | Icon size. | 20 |
iconStyle | Styles applied to the icon only, good for setting margins or a different color. Note: use iconStyle for margins or expect unstable behaviour. | {marginRight: 10} |
backgroundColor | Background color of the button. | #007AFF |
borderRadius | Border radius of the button, set to 0 to disable. | 5 |
onPress | A function called when the button is pressed. | None |
We are also going to use these components in our example.
I think this is enough now let’s get started with the example. In this example, We will create a simple Screen with different icons and will run it in Android and IOS.
To Make a React Native App
Getting started with React Native will help you to know more about the way you can make a React Native project. We are going to use react-native init to make our React Native App. Assuming that you have node installed, you can use npm to install the react-native-cli
command line utility. Open the terminal and go to the workspace and run
npm install -g react-native-cli
Run the following commands to create a new React Native project
react-native init ProjectName
If you want to start a new project with a specific React Native version, you can use the –version argument:
react-native init ProjectName --version X.XX.X
react-native init ProjectName --version react-native@next
This will make a project structure with an index file named App.js in your project directory.
Installation of Dependency
To use Icon
component you need to install react-native-vector-icons
dependency.
To install this open the terminal and jump into your project
cd ProjectName
Run the following command
npm install react-native-vector-icons --save
This command will copy all the dependencies into your node_module directory. –save is optional, it is just to update the react-native-vector-icons dependency in your package.json file.
CocoaPods Installation
We need to install pods for the iOS
cd ios && pod install && cd ..
Importing Icon Files in Android
To use Vector Icon in Android we need to import the Icons from react-native-vector-icons,
- Create assets/fonts directory in android/app/src/main
- Once you create the fonts directory copy all the font files from node_modules/react-native-vector-icons/Fonts into it
projectname/android/app/src/main/assets/fonts
Importing Icon Files in iOS
Please follow the below steps to use vector icons in iOS
1. Create a fonts directory in ios and copy all the font files from node_modules/react-native-vector-icons/Fonts into it
2. Now open the project YourProject -> ios -> YourProject.xcworkspace in Xcode.
3. After opening the project in Xcode click on the project from the left sidebar to open the options and select Add Files to “YourProjectName”
4. Select the fonts directory which you have created. Remember to select Create Folder references from below and click Add
5. Now click the project name on the left top, and select the project name on TARGETS. Click the Info tab on the top menu to see Info.plist and add Fonts provided by application and font files under it.
Here we are adding few but you can add or remove according to your need. You can also add all font files which we have copied in above step.
If you were an iOS developer or have knowledge about info.plist then you can add following lines directly into info.plist but if you have already performed the above action then you don’t worry about this as this has been already added by XCode.
<key>UIAppFonts</key><array> <string>fonts/FontAwesome.ttf</string> <string>fonts/Ionicons.ttf</string> <string>fonts/Foundation.ttf</string> <string>fonts/MaterialCommunityIcons.ttf</string> <string>fonts/MaterialIcons.ttf</string></array>
6. After completion, it will look like this
Code to Use Vector Icon in React Native
Now Open App.js in any code editor and replace the code with the following code
App.js
// Example to Use React Native Vector Icons// https://aboutreact.com/react-native-vector-icons/// Import Reactimport React from 'react';// Import required componentimport {SafeAreaView, StyleSheet, Text, View} from 'react-native';// Import vector iconsimport Icon from 'react-native-vector-icons/FontAwesome';const App = () => { return ( <SafeAreaView style={{flex: 1}}> <View style={{flex: 1, padding: 16}}> <View style={styles.container}> <Text style={styles.heading}> Example to Use React Native Vector Icons </Text> <View style={styles.iconContainer}> <Text> <Icon name="rocket" size={30} color="#900" /> </Text> {/* Icon Component */} <Icon name="rocket" size={30} color="#900" /> </View> <View style={{marginTop: 16, marginBottom: 16}}> {/* Icon.Button Component */} <Icon.Button name="facebook" backgroundColor="#3b5998" onPress={() => alert('Login with Facebook')}> Login with Facebook </Icon.Button> </View> </View> <Text style={styles.footerTitle}>Vector Icons</Text> <Text style={styles.footerText}>www.aboutreact.com</Text> </View> </SafeAreaView> );};const styles = StyleSheet.create({ container: { flex: 1, alignItems: 'center', justifyContent: 'center', }, heading: { fontSize: 20, textAlign: 'center', marginBottom: 20, }, iconContainer: { marginTop: 16, marginBottom: 16, justifyContent: 'center', alignItems: 'center', textAlign: 'center', }, footerTitle: { fontSize: 18, textAlign: 'center', color: 'grey', }, footerText: { fontSize: 16, textAlign: 'center', color: 'grey', },});export default App;
To Run the React Native App
Open the terminal again and jump into your project using.
cd ProjectName
To run the project on an Android Virtual Device or on real debugging device
react-native run-android
or on the iOS Simulator by running (macOS only)
react-native run-ios