Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

424
Vistas
Input text label on border in react native

I want to create an input box like this:

enter image description here

But I designed it like this, and I don't know how to add the label on the input border

enter image description here

My Code is:

<InputBox label="Email" icon={true} keyboardType="email-address" defaultValue={emailId} onChangeText={text => setEmailId(text)} />

Input Component:

    import React from 'react';
import {View, StyleSheet, TextInput, Text} from 'react-native';
import {COLORS} from '../constants/colors';
import {FONT_FAMILY} from '../constants/font-family';

export default function InputBox(props) {
  return (
    <View style={styles.container}>
      <View style={{flex: 1}}>
        <Text style={styles.label}>{props.label}</Text>
        <TextInput
          placeholder={props.placeholder}
          placeholderTextColor="#9F9F9F"
          style={styles.input}
          keyboardType={props.keyboardType}
          secureTextEntry={false}
          defaultValue={props.defaultValue}
          onChangeText={props.onChangeText}
          editable={props.editable}
        />
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flexDirection: 'row',
    alignItems: 'center',
    marginBottom: 20,
    paddingTop: 7.5,
    paddingHorizontal: 12.5,
    paddingBottom: 2.5,
    borderRadius: 5,
    borderWidth: 0.75,
    borderColor: COLORS.WHITE,
  },
  input: {
    fontFamily: FONT_FAMILY.primaryMedium,
    fontSize: 14,
    height: 37,
    color: COLORS.WHITE,
  },
  label: {
    fontFamily: FONT_FAMILY.primary,
    marginLeft: 5,
    color: COLORS.WHITE,
    fontSize: 12,
    //  marginTop: -30,
  },
});

By using react-native-paper, when I add transparent background color it looks like this:

enter image description here

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

If you have to use a material ui styled components you may wanna use reactnativepaper

about 4 years ago · Juan Pablo Isaza Denunciar

0

hi there you cna use this code to achive import React from 'react';

import {View, StyleSheet, Text} from 'react-native';

    import { TextInput } from 'react-native-paper';
    export default function InputBox(props) {
      return (
        <View style={styles.container}>
         <TextInput
         mode="outlined"
          label="Email"
          style={{width:'90%'}}
        />
        </View>
      );
    }
    
    const styles = StyleSheet.create({
      container: {
        justifyContent:'center',alignItems:'center',
     flex:1
        
        // borderColor: COLORS.WHITE,
      },
      input: {
        // fontFamily: FONT_FAMILY.primaryMedium,
        fontSize: 14,
        height: 37,
        // color: COLORS.WHITE,
      },
      label: {
        // fontFamily: FONT_FAMILY.primary,
        marginLeft: 5,
        // color: COLORS.WHITE,
        fontSize: 12,
        //  marginTop: -30,
      },
    });

you can test it on Snack

Also you can read more about props here react-native-paper

about 4 years ago · Juan Pablo Isaza Denunciar

0

I was able to get this accomplished purely in React Native without any dependencies. The trick was to put the Text in a View with a background color the same as the screen's and position the Text absolutely. My example code hardcodes a lot of values, but if you want it to be responsive you'll need to come up with your own way of figuring those values out. The code:

import { View, Text, TextInput, StyleSheet } from "react-native";

const Input = () => {
    return (
        <View>
            <View style={styles.labelContainer}>
                <Text>Email Address</Text>
            </View>
            <View style={styles.inputContainer}>
                <TextInput placeholder="Enter email address" />
            </View>

        </View>
    );
}

const styles = StyleSheet.create({
    labelContainer: {
        backgroundColor: "white", // Same color as background
        alignSelf: "flex-start", // Have View be same width as Text inside
        paddingHorizontal: 3, // Amount of spacing between border and first/last letter
        marginStart: 10, // How far right do you want the label to start
        zIndex: 1, // Label must overlap border
        elevation: 1, // Needed for android
        shadowColor: "white", // Same as background color because elevation: 1 creates a shadow that we don't want
        position: "absolute", // Needed to be able to precisely overlap label with border
        top: -12, // Vertical position of label. Eyeball it to see where label intersects border.
    },
    inputContainer: {
        borderWidth: 1, // Create border
        borderRadius: 8, // Not needed. Just make it look nicer.
        padding: 8, // Also used to make it look nicer
        zIndex: 0, // Ensure border has z-index of 0
    },
});

export default Input;

This is what it looks like on my device (Samsung Galaxy S10+): Label overlapping border

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda