我在这里有一个应用程序,我需要将徽标放在导航栏中。那需要溢出场景布局。在 Ios 中运行良好,没有问题,但在 android 中似乎他不工作。我把代码放在图像的底部。如您所见,我使用 EStyleSheet 以便让我使用 %.
IOS
安卓
import React from 'react';
import { Scene, Router } from 'react-native-router-flux';
import EStyleSheet from 'react-native-extended-stylesheet';
import { View, Platform } from 'react-native';
import { SmallLogo } from './components';
import { checkColor } from './helpers';
import {
HomeScreen,
ImagePickerScreen,
WaitingResponseScreen,
ResultsScreen
} from './modules';
import Colors from '../constants/Colors';
const styles = EStyleSheet.create({
navStyle: {
flex: 1,
marginTop: '5%',
alignItems: 'center',
},
logoCircle: {
backgroundColor: '$whiteColor',
height: 60,
width: 60,
borderRadius: 30,
justifyContent: 'center',
alignItems: 'center'
}
});
const logoNav = result => (
<View style={styles.navStyle}>
<View style={styles.logoCircle}>
<SmallLogo color={checkColor(result)} />
</View>
</View>
);
const pdTop = Platform.OS === 'ios' ? 64 : 54;
export default () => (
<Router
sceneStyle={{ paddingTop: pdTop }}
navigationBarStyle={{ backgroundColor: Colors.greenColor }}
renderTitle={props => {
if (props.result) {
return logoNav(props.result);
}
return logoNav(null);
}}
backButtonTextStyle={{ color: Colors.whiteColor }}
leftButtonIconStyle={{ tintColor: Colors.whiteColor }}
>
<Scene
key="home"
component={HomeScreen}
/>
<Scene
key="imagesPicker"
hideBackImage
component={ImagePickerScreen}
/>
<Scene
key="waitingResponse"
backTitle="Back"
component={WaitingResponseScreen}
/>
<Scene
key="results"
backTitle="Back"
initial
component={ResultsScreen}
/>
</Router>
);
原文由 EQuimper 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Android 中,您不能在组件边界之外进行绘制,这是一件非常烦人的事情。我通常会采取以下解决方法:将您的组件包装在一个新的
<View>
中,它同时包装了以前的容器和溢出的数据。 Set the viewbackgroundColor
to'transparent'
so that it is invisible, and thepointerEvents
prop to'box-none'
, so that events get propagated to children .视图的尺寸应该是前一个顶部组件加上溢出的尺寸(在您的情况下,它只是高度),但我认为这在某些情况下也应该很好地与 Flexbox 一起使用。