javascript - react-native-paper Modal在可见时不隐藏所有其他元素
问题描述
我的模态并没有完全超越 Android 下的所有其他组件,但在 Ios 下运行良好。
我尝试更改组件的层次结构,使用 zIndex 和绝对位置,但我的绿色按钮始终可见,但在模态显示时不可触摸。
模态不可见(Android 和 Ios):
模态可见(Android)按钮仍然可见:
模态可见(Ios)按钮不可见:
我的组件:
<View style={styles.container}>
<Spinner
visible={spinner}
textContent={'Recherche de jardins...'}
textStyle={styles.spinnerTextStyle}
/>
<View style={[styles.noThreadContainer, {flex: 5}]}>
<View style={styles.noThreadView}>
<Title style={styles.noThreadTitle}>
Personne autour de vous à {toKm(finalDistance)} km
</Title>
<Button icon="map-marker-distance" mode="contained" onPress={showModal}>
Modifier la distance
</Button>
</View>
</View>
<SliderModal style={{flex: 1}} />
</View>;
滑块模式:
const SliderModal = () => {
const minValue = 5000;
const maxValue = 200000;
const [kmValue, setKmValue] = useState(finalDistance || 5000);
return (
<Provider>
<Portal>
<Modal
visible={visible}
dismissable={false}
onDismiss={hideModal}
contentContainerStyle={styles.sliderContainer}>
<Title style={{alignSelf: 'center', marginBottom: 40}}>
Modifier la distance
</Title>
<View style={styles.kmContainer}>
<Text>{toKm(minValue)} km</Text>
<Title>{toKm(kmValue)} km</Title>
<Text>{toKm(maxValue)} km</Text>
</View>
<Slider
onValueChange={setKmValue}
value={finalDistance}
step={5000}
style={styles.slider}
minimumValue={minValue}
maximumValue={maxValue}
minimumTrackTintColor="brown"
maximumTrackTintColor="#77DD77"
/>
<View style={[styles.kmContainer, styles.buttonContainer]}>
<Button color="brown" onPress={hideModal}>
Fermer
</Button>
<Button
labelStyle={{color: 'white'}}
color="#77DD77"
mode="contained"
onPress={() => {
hideModal();
setFinalDistance(kmValue);
}}>
Valider
</Button>
</View>
</Modal>
</Portal>
</Provider>
);
};
样式表:
const styles = StyleSheet.create({
container: {
flex: 1,
},
sliderContainer: {backgroundColor: 'white', padding: 20},
slider: {width: '100%', height: 40},
kmContainer: {
flexDirection: 'row',
justifyContent: 'space-between',
},
buttonContainer: {
marginTop: 30,
},
noThreadView: {
alignSelf: 'center',
justifyContent: 'center',
width: width * 0.8,
},
noThreadContainer: {
flex: 1,
alignContent: 'center',
justifyContent: 'center',
},
noThreadTitle: {
marginBottom: 15,
alignSelf: 'center',
},
spinnerTextStyle: {
color: '#FFF',
},
});
解决方案
就在按钮添加!可见之前,像这样:
{ !visible && <Button icon="map-marker-distance" mode="contained" onPress={showModal}>
Modifier la distance
</Button>
}
推荐阅读
- node.js - Node.js 文档中嵌套对象的 MongoDB 自动增量
- javascript - 如何使用 npm 包
- url-rewriting - URL 从尾随字符串重写为 GET 变量
- java - JSON 解析错误:无法反序列化 ArrayList 的实例
- java - 如何使用 gdx-gamesvcs 将游戏数据保存到云端?
- amazon-web-services - 如何在两个不同的 AWS 区域对同一用户进行身份验证?
- c++ - 以指定字符结束输入流,例如“|”?
- mongodb - 如何加载 MongoDB 客户端并在 F# Interactive 中启动连接?
- java - AppCompatButton 不使用选择器更改文本或背景
- python - Python 用 docx 库编写 word 文件