Как разместить текст поверх изображения в React Native?

Как вертикально разместить текст поверх изображения в React Native? Я нашел этот документ. Но я не могу этого сделать, я не могу добавить тег text в качестве дочернего компонента тега Image. Я пробовал, как показано ниже.

 <Card>
    <CardSection>
            <View style = {styles.container}>
              <Image source = {require('../Images/4.jpg')} style = {styles.imageStyl}  />
    <Text style = {styles.userStyle}>       
            {this.props.cat.name}
             </Text>
             </View>
            </CardSection>
            </Card>
const styles= StyleSheet.create({

    container:{
         flex: 1,
    alignItems: 'stretch',
    justifyContent: 'center',
    },
    imageStyl: {
    flexGrow:1,
    width:"100%",
    height:200,
    alignItems: 'center',
    justifyContent:'center',
  },
    userStyle:{
        fontSize:18,
        color:'black',
        fontWeight:'bold',
        textAlign: 'center'
    },
});

Как разместить текст по центру изображения? Получилось примерно так Как разместить текст поверх изображения в React Native?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
18
0
49 347
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вы должны использовать в "css" position:'absolute' А затем разместите свой текст, используя свойства css (например, сверху, снизу, справа, слева)


React Native абсолютное позиционирование по горизонтали по центру

Оберните ребенка, которого вы хотите центрировать, в View и сделайте View абсолютным.

<View style = {{position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, justifyContent: 'center', alignItems: 'center'}}> <Text>Centered text</Text> </View>

Это так похоже на то, что обычный HTML и CSS помещают текст поверх изображения. Вы должны поместить текст поверх изображения, сделав текст абсолютным.

  • изменил этот код как есть:

    userStyle:{
        position : absolute;
        bottom : 0,
        top : 50,
        left : 0,
        right : 0,
        alignItems: 'center',
        justifyContent:'center',
    }
    

Надеюсь, этот код решит вашу проблему.

вопрос в том, чтобы реагировать на родных

prisar 02.02.2021 11:18

Для этого у меня есть собственный компонент:

import React from 'react';
import { View, Image } from 'react-native';

const BackgroundImage = (props) => {

  const { container, image } = styles;


  return (

    <View style = {container}>
      <Image
      style = {[image, 
        { resizeMode: props.resizeMode,    
        opacity: props.opacity}
      ]}  
      source = {props.source}***strong text***
      />
    </View>

  )
};

const styles = {
  container: {
    position: 'absolute',
    top: 0,
    left: 0,   
    width: '100%',
    height: '100%',
  },
  image: {  
    flex: 1,  
  }
};

export {BackgroundImage};

этот компонент заполнит ваш контейнер любым изображением;)

import React from 'react';
import { View, Image } from 'react-native';

class List extends Component {
   render() {
    let source = {uri: 'http://via.placeholder.com/350x150'};
    return (
           <View style = {{backgroundColor: 'black'}>
              <BackgroundImage
               resizeMode = "cover"
               opacity = {0.6}
               source = {source}
               />
               <Text>Hello World</Text>
            </View>
     )
   }
   export default List;

использовать это:

<ImageBackground source = {require('background image path')} style = {{width: '100%', height: '100%'}}>
   <View style = {{position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, justifyContent: 'center', alignItems: 'center'}}>
     <Text>Centered text</Text>
   </View>
</ImageBackground>

Это более удобный способ добиться этого.

garykwwong 17.05.2020 15:42

Вы можете импортировать ImageBackground вместо Image из react-native и передать текст в качестве дочерних в ImageBackground. Это творит чудеса. Пожалуйста, посмотрите код ниже:

<View style = {styles.imageWrapper}>
     <ImageBackground style = {styles.theImage} source = {{uri : item.imageUrl}}>
          <Text>Hey</Text>
     </ImageBackground>
</View>

const styles = StyleSheet.create({
    imageWrapper: {
        height: 200,
        width: 200,
        overflow : "hidden"
    },
    theImage: {
        width: "100%",
        height: "100%",
        resizeMode: "cover",
    }
})

Мы также можем использовать позиционирование, как утверждают многие, но я предпочитаю использовать ImageBackground.

Другие вопросы по теме