React Native Paper ProgressBar 不可见

React Native Paper ProgressBar Not visible

你好,我一直在学习教程,一切顺利,直到导师在他的项目中使用了 react-native-paper ProgressBar,我写的完全一样,但它不可见,我找到了文档并将其插入,仍然不可见。

我做错了什么?

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

import CountDown from '../comps/CountDown.js' ;

const Timer = ({task}) => {
  return ( 
    <View style={styles.container}> 
      <CountDown />
      <Text style={styles.text}> Focusing On:</Text>
      <Text style={[styles.text, styles.textBold]}> {task} </Text>
      <ProgressBar progress={0.4} color='#5E84E2' style={styles.progress}/>
    </View>
  ) ;
}

const styles = StyleSheet.create({
  container : {
    flex: 1,
    width: 100,
    alignItems: 'center' ,
    justifyContent: 'center',
    paddingTop: 40,
  },
  text: {
    // flex: 0.5, 
    color: 'white'
  },
  textBold: {
    fontWeight: 'bold' ,
    // borderColor: 'white',
    // borderWidth: 1,
    // borderStyle: 'solid' ,
  },
  progress: {
    height: 10,
    // borderColor: 'white',
    // borderWidth: 1,
    // borderStyle: 'solid' ,
  }
}) ;

export default Timer ;

此外,如果我要为进度条添加边框,它会出现但宽度会继续增加,即使宽度大于视口宽度也是如此。我不知道发生了什么

这里的问题是当你使用 alignItems 时,子组件需要有一个固定的宽度,你的进度条没有固定的宽度。

您必须在样式中提供一个。

 progress: {
    height: 10,
    width:50
  }

基于 documentation 宽度的默认值为

auto (default value) React Native calculates the width/height for the element based on its content, whether that is other children, text, or an image.

最好有一个宽度值,这将解决您的问题。

响应式解决方案

目前 ProgressBar 不支持 flex 样式系统。 如果有人还希望在其父组件的情况下使宽度等于 100%,则提供了一个很好的推荐解决方案 here

只需将宽度设置为未定义:

progress: {
    height: 10,
    width:undefined
}

例如

<View style={{ flex: 2, other flex styles }}>
  <ProgressBar progress={0.5} color="white"  style={{ height: 5, width: undefined }} />
</View>