【发布时间】:2018-04-21 22:27:29
【问题描述】:
我正在尝试将我的文本放在可用区域内,我的约束是这样的:
- 文本不应溢出,
- 文本必须在所有可用视图中放大,
- 单词不应该被分解成字符并转到下一行句子可以,
- 当我在父视图中使用 flex 时,文本不应水平扩展视图超过屏幕宽度。
这是我的代码 sn-p:
import React from "react";
import { StyleSheet, Text, View } from "react-native";
import { Font } from "expo";
import Lorem from "./src/helpers/lorem-ipsum-gen";
export default class App extends React.Component {
constructor() {
super()
this.state = {
fontLoaded: false,
};
}
//theboldfont.ttf
async componentWillMount() {
await Font.loadAsync({
"akzidenz-grotesk-bq-bold": require("./assets/fonts/AkzidenzGrotesk_BQ_Bold.otf"),
});
this.setState({ fontLoaded: true });
}
render() {
let loremText = new Lorem().generate(20)
return (
<View style={styles.container}>
<View>
<View style={{ flex: 0.37 }} > </View>
<View style={{ flex: 0.25, backgroundColor: "red" }} >
<View >
{
this.state.fontLoaded ? (<Text
style={{ fontFamily: "akzidenz-grotesk-bq-bold", fontSize: 50 }}
adjustsFontSizeToFit={true}
>
{loremText}
</Text>) : null
}
</View>
</View>
<View style={{ flex: 0.38 }} >
<Text>
{loremText}
</Text>
</View>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});
它的结果:
我为实现目标所做的努力:
- 我认为它与自定义字体有关并更改为默认字体(无效)
- 在一些 github 问题中,人们在 text style prop 中写入了 adjustsFontSizeToFit={true}(无效)
- 我尝试了 allowFontScaling(无效)
- 删除字体大小(无效)
- 移除 flex 并设置静态宽度和高度以查看(无效)
- 以上所有步骤的组合(无效)
【问题讨论】:
标签: javascript react-native fonts flexbox expo