{"componentChunkName":"component---src-templates-blog-post-js","path":"/creating-custom-buttons-in-react-native","result":{"data":{"markdownRemark":{"id":"909fe9fc-9e82-5ca0-bf0a-ad4a82feda65","html":"<h2>Introduction</h2>\n<p>React Native is an open-source mobile application framework created by Facebook, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Web, Windows, and UWP by enabling developers to use React's framework along with native platform capabilities. React Native is one of the best platforms to create a cross-platform application that works on both Android as well as iOS. The core UI components in react native help us to speed up and scale up the development</p>\n<p>But.. this core UI element Looks different in a different platform as in android and iOS same goes with the Button  component look different on each platform, and there are limited styling and customization options to these components. For this and many other reasons, it’s critical to know how to create buttons that look consistent regardless of the operating system.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1024px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 56.640625%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'227\\'%20viewBox=\\'0%200%20400%20227\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%20114v113h401V0H0v114m176-74c-17%206-26%2027-18%2043%2012%2025%2049%2024%2058-1%209-26-15-51-40-42m-4%208l-1%207%201%205-4%202c-7%203-9%206-6%2010l6%204%204%202v7c-1%209%203%2011%2012%205l4-2%204%202c5%204%207%204%2010%203%202-2%202-4%202-11%200-3%200-4%205-6%208-4%208-9%200-13l-5-3v-6c0-10-4-12-12-6-4%202-5%203-6%201-4-4-11-5-14-1M24%20103l1%2058h69V46H24v57m150-54l-1%206v4h4c4%200%209-4%209-7s-11-6-12-3m18%201l-3%203%203%203c4%204%2010%204%2011%200%201-8-4-12-11-6m100%203l-1%2053v52h61V53l-30-1-30%201M180%2065l-3%205%203%203c4%208%2012%208%2016%201l2-5-2-4c-2-4-3-5-8-5h-6l-2%205m-13-1c-7%204-6%207%201%2011l4%202%202-4v-7c-2-5-2-5-7-2m35%201c-3%206%200%2012%204%2011%206-2%209-8%204-11-5-4-7-4-8%200m-28%2015c-2%201-1%2010%200%2011%202%202%206%201%2010-2l2-3-2-3-4-3-4-1-2%201m22%200c-2%200-6%204-6%206s8%206%2010%206c4-2%204-13%200-13l-4%201M29%20106v3h19v-6H29v3m39%200v3h20v-6H68v3m57%2020l-7%207%207%207%206%207h50v-29h-49l-7%208m64%2038v14h50l7-7%206-8-6-7-6-7h-51v15\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Buttons in different OS\"\n        title=\"Buttons in different OS\"\n        src=\"/static/95f4867a5640e111c7fcf76b26913a16/2bef9/frame-13-1-.png\"\n        srcset=\"/static/95f4867a5640e111c7fcf76b26913a16/6f3f2/frame-13-1-.png 256w,\n/static/95f4867a5640e111c7fcf76b26913a16/01e7c/frame-13-1-.png 512w,\n/static/95f4867a5640e111c7fcf76b26913a16/2bef9/frame-13-1-.png 1024w,\n/static/95f4867a5640e111c7fcf76b26913a16/71c1d/frame-13-1-.png 1536w,\n/static/95f4867a5640e111c7fcf76b26913a16/a878e/frame-13-1-.png 2048w,\n/static/95f4867a5640e111c7fcf76b26913a16/010a3/frame-13-1-.png 3884w\"\n        sizes=\"(max-width: 1024px) 100vw, 1024px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Buttons in different OS</figcaption>\n  </figure></p>\n<p>For a user interface to look seamless and the same on every platform it becomes very important to create our custom components. In this blog, we will be dealing with several methods to create our custom button.</p>\n<!--EndFragment-->\n<!--StartFragment-->\n<h2>Setting Up</h2>\n<p>Assuming you all guys know the basics of React and React-native let's get right into constructing custom buttons component in react-native.</p>\n<p>Start with setting up a general React native app by typing the following in the command prompt</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">npm react<span class=\"token operator\">-</span>native init AviateButtonDemo</code></pre></div>\n<!--StartFragment-->\n<p>Clear down the all default code written in the App.js and start with the fresh window. Then type the following to get the basic component of a button in react-native</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> View<span class=\"token punctuation\">,</span> Button<span class=\"token punctuation\">,</span> StyleSheet <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"react-native\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">App</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span>View style<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>Container<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Button title<span class=\"token operator\">=</span><span class=\"token string\">\"Hii dev!\"</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>View<span class=\"token operator\">></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> styles <span class=\"token operator\">=</span> StyleSheet<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  Container<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    flex<span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n    justifyContent<span class=\"token operator\">:</span> <span class=\"token string\">\"center\"</span><span class=\"token punctuation\">,</span>\n    padding<span class=\"token operator\">:</span> <span class=\"token number\">18</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> App<span class=\"token punctuation\">;</span></code></pre></div>\n<!--StartFragment-->\n<p>In the above code, we have created a button that is the core UI component of the react-native which is wrapped inside the container which is the View component of the react-native. In react-native, we are provided with the Stylesheet where we can style our component we can say it comes as an analogy of CSS or abstraction to CSS stylesheets.</p>\n<!--EndFragment-->\n<!--StartFragment-->\n<h2>The Custom Button Component</h2>\n<p>As we have now done with the home page set up with the general button component and in this, you can see how it appears different on different OS. Now to cope up with this we will make our custom button which will be a functional component.</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> <span class=\"token function-variable function\">CustomButton</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n   \n<span class=\"token punctuation\">)</span></code></pre></div>\n<!--StartFragment-->\n<p>Name the custom button as <em>CustomButton</em></p>\n<p>As we are going to make a custom button so we will make use of the TouchableOpacity component to make a touchable component and manipulate it as we need so for this we will be required to import certain components which are</p>\n<p><code class=\"language-text\">&lt;TouchableOpacity/&gt;</code> and we have to include <code class=\"language-text\">&lt;Text/&gt;</code>component to add text in it. So import them from react-native.</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"> <span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> View<span class=\"token punctuation\">,</span> Button<span class=\"token punctuation\">,</span> StyleSheet<span class=\"token punctuation\">,</span> TouchableOpacity<span class=\"token punctuation\">,</span> Text <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"react-native\"</span><span class=\"token punctuation\">;</span></code></pre></div>\n<!--StartFragment-->\n<p>Now, let's code the custom button. In this, we need to add onPress to the TouchableOpacity and add the text we need to have on button.</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> <span class=\"token function-variable function\">CustomButton</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> onPress<span class=\"token punctuation\">,</span> title <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token operator\">&lt;</span>TouchableOpacity onPress<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>onPress<span class=\"token punctuation\">}</span> style<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>customButton<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>Text style<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>customButtonText<span class=\"token punctuation\">}</span><span class=\"token operator\">></span><span class=\"token punctuation\">{</span>title<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Text<span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>TouchableOpacity<span class=\"token operator\">></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<!--StartFragment-->\n<p><code class=\"language-text\">&lt;TouchableOpacity/&gt;</code> this component provides a robust behavior of change in opacity while clicking or touching we can customize that too with its properties one such property is activeOpacity. So we can control opacity by bypassing this prop to the component. Similarly, we can add various props to these components as per our needs and customize them. Go through the <a href=\"https://reactnative.dev/docs/touchableopacity\">doc</a> of the same for more props and its feature.</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> <span class=\"token function-variable function\">CustomButton</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> onPress<span class=\"token punctuation\">,</span> title <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token operator\">&lt;</span>TouchableOpacity\n    activeOpacity<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token number\">0.6</span><span class=\"token punctuation\">}</span>\n    onPress<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>onPress<span class=\"token punctuation\">}</span>\n    style<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>appButtonContainer<span class=\"token punctuation\">}</span>\n  <span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>Text style<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>appButtonText<span class=\"token punctuation\">}</span><span class=\"token operator\">></span><span class=\"token punctuation\">{</span>title<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Text<span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>TouchableOpacity<span class=\"token operator\">></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<!--StartFragment-->\n<h2>Styling</h2>\n<p>As our main motive is to make our UI consistent and seamless in both OS so let's start styling the custom button component.</p>\n<!--EndFragment-->\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> styles <span class=\"token operator\">=</span> StyleSheet<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\ncustomButton<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    elevation<span class=\"token operator\">:</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n    backgroundColor<span class=\"token operator\">:</span> <span class=\"token string\">\"#FFFE00\"</span><span class=\"token punctuation\">,</span>\n    borderRadius<span class=\"token operator\">:</span> <span class=\"token number\">15</span><span class=\"token punctuation\">,</span>\n    paddingVertical<span class=\"token operator\">:</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n    paddingHorizontal<span class=\"token operator\">:</span> <span class=\"token number\">10</span> \n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  customButtonText<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n   fontSize<span class=\"token operator\">:</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span>\n    color<span class=\"token operator\">:</span> <span class=\"token string\">\"#000000\"</span><span class=\"token punctuation\">,</span>\n    fontWeight<span class=\"token operator\">:</span> <span class=\"token string\">\"bold\"</span><span class=\"token punctuation\">,</span>\n    alignSelf<span class=\"token operator\">:</span> <span class=\"token string\">\"center\"</span><span class=\"token punctuation\">,</span>\n    \n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<!--StartFragment-->\n<p>It should look some what like this</p>\n<!--EndFragment-->\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 335px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 202.34375%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'810\\'%20viewBox=\\'0%200%20400%20810\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2052a514%20514%200%20001%2075l-1%2014%201%2014v117L0%20541v269h401V0H0v52M44%205c-5%201-12%204-12%206l5-1c11-4%2020-4%20165-4a813%20813%200%2001169%205l-6-4-5-2-156-1L44%205M5%2053C3%2064%204%20759%206%20765c1%204%201-27%201-286C7%2066%207%2044%205%2053m391%20350a60574%2060574%200%20010%20364l2-12c2-16%201-702-1-706-1-3-1%2084-1%20354m-353-5c-5%203-6%207-6%2025%200%2017%201%2021%206%2024s311%203%20315%200c6-4%207-7%207-25v-16l-3-4-5-5-156-1c-153%200-155%200-158%202m127%2022c0%207%200%208%202%208l2-3c0-5%206-4%206%200%200%202%201%203%202%203l1-8-1-8c-1%200-2%201-2%203-1%205-5%205-6%201l-2-4c-2%200-2%201-2%208m40-7l-1%202-2%202c-3%200-5%202-5%206s2%205%207%205h4v-8c0-8-1-10-3-7M31%20800c4%203%2012%206%2020%207l155%201c164-1%20152%200%20164-7a724%20724%200%2001-168%204%20741%20741%200%2001-171-5\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Demonstration on emulator\"\n        title=\"Demonstration on emulator\"\n        src=\"/static/cd42605942d2a4df70f96294333397c2/c0051/3.png\"\n        srcset=\"/static/cd42605942d2a4df70f96294333397c2/6f3f2/3.png 256w,\n/static/cd42605942d2a4df70f96294333397c2/c0051/3.png 335w\"\n        sizes=\"(max-width: 335px) 100vw, 335px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Demonstration on emulator</figcaption>\n  </figure></p>\n<!--StartFragment-->\n<p>Wondering how to give gradient or another styling to our buttons! Here react-native has a solution to it. React-native provides a library that gives us the option to apply linear gradient as there is no by default API to include linear gradient in our button so we need to import the library for it of linear-gradient, do the following for importing the same</p>\n<!--EndFragment-->\n<!--StartFragment-->\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">npm i react<span class=\"token operator\">-</span>native<span class=\"token operator\">-</span>linear<span class=\"token operator\">-</span>gradient</code></pre></div>\n<!--EndFragment-->\n<!--StartFragment-->\n<p>Now we have to import <code class=\"language-text\">&lt;LinearGradient/&gt;</code> library from react-native-linear-gradient</p>\n<p>We just need a little tweaking to our previous code in <code class=\"language-text\">&lt;CustomButton/&gt;</code> we have to wrap the <code class=\"language-text\">&lt;TouchableOpacity/&gt;</code> component by <code class=\"language-text\">&lt;LinearGradient/&gt;</code> and add some props to it. Basically, we will add color props to it which will define the gradient of the button. Basically, the color prop in LinearGradient accepts an array of colors through which a gradient is created.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">const</span> <span class=\"token function-variable function\">CustomButton</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> onPress<span class=\"token punctuation\">,</span> title <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">TouchableOpacity</span></span> <span class=\"token attr-name\">onPress</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>onPress<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">LinearGradient</span></span>\n      <span class=\"token attr-name\">colors</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"#FFFE00\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"#C5C417\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span></span>\n      <span class=\"token attr-name\">style</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>appButtonContainer<span class=\"token punctuation\">}</span></span>\n    <span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Text</span></span> <span class=\"token attr-name\">style</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>appButtonText<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>title<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Text</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">LinearGradient</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">TouchableOpacity</span></span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>It should now look somewhat like this-</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 346px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 197.265625%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'790\\'%20viewBox=\\'0%200%20400%20790\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%20395v395h401V0H0v395M49%205c-6%202-10%205-12%207-1%201-1%201%201%201%209-4%2012-5%2020-6h291c7%201%2010%202%2022%207%204%201-2-3-7-6l-6-3-153-1L49%205m342%20388c0%20316%200%20354%201%20350s2-46%202-350c0-305-1-347-2-351s-1%2034-1%20351M14%2044c-2%209-2%20693%200%20698a210082%20210082%200%20000-698m34%20343l-4%204v16c0%2019%201%2023%206%2026%203%202%205%202%20153%202%20164%200%20154%200%20157-6%201-2%202-7%202-20%200-17%200-18-2-21-4-5%205-5-157-5H52l-4%204m156%2019c0%202%200%202-2%202-2-1-5%202-5%205%200%204%202%206%207%206h4v-8c0-7%200-8-2-8-1%200-2%201-2%203m-38%206l1%207c1%200%202-1%202-3%200-3%201-4%203-4%203%200%203%200%203%203s0%204%202%204%202-1%202-7c0-7%200-8-2-8-1%200-2%201-2%203s0%202-3%202-3%200-3-2l-1-3c-2%200-2%202-2%208M35%20773c3%202%2013%207%2019%208l153%201c164-1%20150%200%20162-8%205-3%204-4-2-1-11%206-3%205-157%206-152%200-156%200-167-5a2360%202360%200%2000-8-1\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"With gradient\"\n        title=\"With gradient\"\n        src=\"/static/9805355f0dccb11102a1b14e2dae5e97/8f77f/2.png\"\n        srcset=\"/static/9805355f0dccb11102a1b14e2dae5e97/6f3f2/2.png 256w,\n/static/9805355f0dccb11102a1b14e2dae5e97/8f77f/2.png 346w\"\n        sizes=\"(max-width: 346px) 100vw, 346px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">With gradient</figcaption>\n  </figure></p>\n<p>Full Source code of the tutorial is here given below,</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> View<span class=\"token punctuation\">,</span> StyleSheet<span class=\"token punctuation\">,</span> TouchableOpacity<span class=\"token punctuation\">,</span> Text <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"react-native\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> LinearGradient <span class=\"token keyword\">from</span> <span class=\"token string\">\"react-native-linear-gradient\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">CustomButton</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> onPress<span class=\"token punctuation\">,</span> title <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">TouchableOpacity</span></span> \n     <span class=\"token attr-name\">onPress</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>onPress<span class=\"token punctuation\">}</span></span>\n    <span class=\"token attr-name\">activeOpacity</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token number\">0.6</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">LinearGradient</span></span>\n      <span class=\"token attr-name\">colors</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"#FFFE00\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"C5C417\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span></span>\n      <span class=\"token attr-name\">style</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>customButton<span class=\"token punctuation\">}</span></span>\n    <span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Text</span></span> <span class=\"token attr-name\">style</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>customButtonText<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>title<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Text</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">LinearGradient</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">TouchableOpacity</span></span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">App</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">View</span></span> <span class=\"token attr-name\">style</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>styles<span class=\"token punctuation\">.</span>screenContainer<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      &lt; CustomButton title=\"Hi dev!\"  backgroundColor=\"#312D2D\" />\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">View</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> styles <span class=\"token operator\">=</span> StyleSheet<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n\n  customButton<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      elevation<span class=\"token operator\">:</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n      backgroundColor<span class=\"token operator\">:</span> <span class=\"token string\">\"#FFFE00\"</span><span class=\"token punctuation\">,</span>\n      borderRadius<span class=\"token operator\">:</span> <span class=\"token number\">15</span><span class=\"token punctuation\">,</span>\n      paddingVertical<span class=\"token operator\">:</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n      paddingHorizontal<span class=\"token operator\">:</span> <span class=\"token number\">10</span> \n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    customButtonText<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n     fontSize<span class=\"token operator\">:</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span>\n      color<span class=\"token operator\">:</span> <span class=\"token string\">\"#000000\"</span><span class=\"token punctuation\">,</span>\n      fontWeight<span class=\"token operator\">:</span> <span class=\"token string\">\"bold\"</span><span class=\"token punctuation\">,</span>\n      alignSelf<span class=\"token operator\">:</span> <span class=\"token string\">\"center\"</span><span class=\"token punctuation\">,</span>\n      \n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> App<span class=\"token punctuation\">;</span></code></pre></div>\n<h2>Epilogue</h2>\n<p>Here, I would like to conclude by just stating that as a developer it's our core responsibility to make the user interface look-alike irrespective of OS a user is using so this stands to be of utmost importance to have learned the process of making look button similar to each and every platform in react-native. There’s so much more you can do, but the steps in this blog will help you find your footing as you start creating custom UI components with React Native. </p>\n<p>Reach out to us on <a href=\"https://twitter.com/kartikey_yadav7\"></a><a href=\"https://twitter.com/aviatecoders\">Twitter</a> and <a href=\"https://instagram.com/aviatecoders\">Instagram</a> where we try to provide more value in threads and carousal formats</p>\n<p>Thank You for your time</p>\n<p>Keep learning, Keep coding :)</p>\n<!--EndFragment-->","excerpt":"Introduction React Native is an open-source mobile application framework created by Facebook, Inc. It is used to develop applications for Android…","frontmatter":{"date":"April 12, 2021","slug":"/creating-custom-buttons-in-react-native","title":"Creating Custom Buttons in React Native","description":"Creating a custom button gives you a great and seamlessly consistent UI irrespective of OS. This becomes of utmost importance to implement as the core UI button of react-native looks different in different OS.","featuredImage":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAACE4AAAhOAFFljFgAAACVElEQVQoz32S30uTURzGv+8i00hlP5rTSKcopt5kXRRUdFGxhCDxQroLojvvhC66sSAFt1CXWf0DUZGW5YxKoS5a3uiWls7NLWfLLaVpZZIU0aezvVYS1sWH55zD+z4833MemRoT1iM0qmvwhTDp/z+hUY2Q+m46YEf+ZfjLNBoQ4hFFWEgoTbxeg9rPqvPIK42g/7ehgfUIjRqUmYFH9wVXs9DeqrRFcF5Ygzq/dFEY8RqYnkgZFiOTvtXoSgM+XVOMDwuxkNB8TthWIBTbhXybYDHrmE2C1SpU7NC45hZ8XiE8Xogk4w7ezx4mmahh8d1xFhLHSMaPMh9zsLywj7ZWo/6zRdheZmRnfS2Vjv1p8zxlWFQodF83KsMcgmPVCPTwdbmJpeQpvnxqZGXpDN9XnPCjG3DR5a7ArBLZtgpVNQc55OzkwNkm7JV5WM168qGn5XycqyQedSCfF07zYb6exbk6lbA2rUvJk4oGvi3X0eGyYbHohvYqG3sbGqg+UUdBvobNqht67uSpNliZ8O9BQqu1eBspV6PWqPGPkIjuYjayW72igZbzQm6uQd2bppKuYtLS12Ayaup+Na66NTy3RT1g0Z/a6L3T0poi1b9oYAOP+3LVC2dzuT2HzrZsOpwbcbs20dVhpKvdyBW3kcF+E55uYcCzTg9nJm3EpuzEwqW8CRUxEyxWo5Qw/KwE3/My/EOlDHvtPHmQwUCfMNin0d9j4O4Nte7/yzCVLPwyQxU1i8j4ZsUWfa0Y8WbysDdLJUmRSe9NLW2S4t4tfT2gDH8C278VieEhaksAAAAASUVORK5CYII=","aspectRatio":1.7857142857142858,"src":"/static/28f08c28a70cfa12c1f02038f1844404/03979/frame-1.png","srcSet":"/static/28f08c28a70cfa12c1f02038f1844404/6cdeb/frame-1.png 350w,\n/static/28f08c28a70cfa12c1f02038f1844404/b1dd8/frame-1.png 700w,\n/static/28f08c28a70cfa12c1f02038f1844404/03979/frame-1.png 800w,\n/static/28f08c28a70cfa12c1f02038f1844404/1783d/frame-1.png 1050w,\n/static/28f08c28a70cfa12c1f02038f1844404/942ca/frame-1.png 1400w,\n/static/28f08c28a70cfa12c1f02038f1844404/0bdd0/frame-1.png 2679w","sizes":"(max-width: 800px) 100vw, 800px","maxHeight":448,"maxWidth":800},"sizes":{"src":"/static/28f08c28a70cfa12c1f02038f1844404/ee604/frame-1.png"}}}}}},"pageContext":{"id":"909fe9fc-9e82-5ca0-bf0a-ad4a82feda65","previous":{"id":"cca980b8-bdd7-5605-9e65-5ae67841853e","frontmatter":{"slug":"/what-is-closures-in-javascript","template":"blog-post","title":"Closures | Javascript"}},"next":{"id":"a6302d39-2ad0-530c-a003-5711313b10d6","frontmatter":{"slug":"/","template":"index-page","title":"Hi there !"}}}},"staticQueryHashes":["228695001","3868140423"]}