【发布时间】:2021-01-25 03:31:34
【问题描述】:
我学习了 react native 并开始开发一个基本的支付应用程序。我正在使用 flex 在屏幕内排列元素。 Flex 布局在所有设备上都是一致的,但如果我将样式应用于 Flux 内的某些组件,则在不同设备之间是不一致的。
例如,我在 flex 内部的视图中添加了一个下拉组件(到期月份),并将顶部边距添加为 25 px。如果我在 Iphone 8 plus 中打开该应用程序,它会按预期显示,但如果我在 Iphone 8 中打开它,它会触摸它上面的组件(即使我尝试将单位更改为百分比而不是像素,但仍然是相同的行为)。我不确定为什么样式在多个设备上都没有响应,有人可以指导我如何使样式响应。
请看下面的截图和代码 sn-p 。谢谢!!!
iPhone 8 Plus
iPhone 8
元素的代码片段
<View
style={{
flex: 0.1,
flexDirection: "row",
}}
>
<RNPickerSelect
items={CardExpiryMonth.getMonth()}
style={{
...pickerSelectStyles1,
placeholder: { color: "grey", fontSize: 15, fontFamily: myFont },
iconContainer: {
top: 35,
},
}}
placeholder={{
label: "Exp Month",
color: "green",
}}
placeholderTextColor="red"
useNativeAndroidPickerStyle={false}
textInputProps={{ underlineColor: "yellow" }}
Icon={() => {
return <Ionicons name="md-arrow-down" size={24} color="gray" />;
}}
/>
</View>
const pickerSelectStyles1 = StyleSheet.create({
inputIOS: {
fontSize: 16,
height: 50,
paddingVertical: 12,
paddingHorizontal: 10,
borderWidth: 1,
borderColor: "gray",
borderRadius: 4,
color: "black",
paddingRight: 30, // to ensure the text is never behind the icon
width: 130,
top: 25,
left: 8 }
【问题讨论】:
-
我认为这是因为 flex:.1。这意味着如果区域的高度为 100px,它将为元素分配 10px。同样适用于不同的 iPhone 尺寸
-
嗨 SaachiTech,感谢您的 cmets,即使 flex 是问题,如何解决?这就是网上所有教程都提到应用 flex 的方式。您能否提出一些解决方案以使样式响应所有设备。
-
父容器长什么样?你能在stackblitz 或condesandbox 上提供最小的可重复性吗?
-
@onkarruikar 这是我的代码:pastebin.com/EV5crvBQ,它在像素 5 上完美运行,但在其他设备上我得到不同的 css,我的宽度屏幕之外的一些组件等等
-
为什么在问题中你说 marginTop 但在代码中它只是说 top? Top 不会做太多,因为你没有绝对位置。将其更改为 marginTop ,它可能会工作......
标签: html css reactjs react-native flexbox