は0.49ネイティブ、ここで反応する反応では、部分的に透明な背景のレイアウトを作成することは、私が達成したいものです。私が使用しているネイティブ
これまでのところ、これは私がやったことです:
render() {
return (
<View style={{flex: 1}}>
<View style={{flexDirection: 'row', justifyContent: 'center', alignItems: 'center'}}>
<SearchHeader /> // search input component
<View style={{padding: 5}}>
<TouchableOpacity style={{padding: 5}} onPress={this.btnPressed}> // icon more
<Image source={require('../../assets/iconMore/iconMore.png')}/>
</TouchableOpacity>
</View>
</View>
<TabBarMain navigation={this.props.navigation}/> // tab navigator
{
this.state.showView
?
<View style={popoverStyle}>
<Text>View is showing</Text>
</View>
:
null
}
</View>
);
}
btnPressed =() => {
this.setState({
showView: !this.state.showView
});
}
私はビューの背後に透明な背景を作ろうとしていますが、私はそうしていません。また、アイコンのすぐ下にある三角形の矢印ポインタ(アイコンをもっと表示)。私のコード/コンポーネントの構造が正しいかどうか確かではありません。また、暗いレイアウトは、(ビューの外側を押すと)押されたときにビューを閉じると思われます。
UPDATE
私は@sfratini答えに応じてビューを追加しました。
showShadowLayer =() => {
if (this.state.showView){
return {
position: 'absolute',
top: 0, bottom: 0, left: 0, right: 0,
backgroundColor: "rgb(0,0,0)",
opacity: 0.5,
zIndex: 1000
}
} else {
return {
flex: 1
}
}
}
render() {
return (
<View style={{flex: 1}}>
<StatusBarView style={{flexDirection: 'row', justifyContent: 'center', alignItems: 'center'}}>
<SearchHeader />
<View style={{padding: 5}}>
<TouchableOpacity style={{padding: 5}} onPress={this.btnPressed}>
<Image
source={require('../../assets/iconMore/iconMore.png')}
/>
</TouchableOpacity>
</View>
</StatusBarView>
<TabBarMain navigation={this.props.navigation}/>
<View style={this.showShadowLayer()}/> // <-- added the partial transparent view here
{
this.state.showView
?
<View style={popoverStyle}>
<Text>View is showing</Text>
</View>
:
null
}
</View>
);
}
const popoverStyle = { // style for the custom popover
borderStyle: 'solid',
position: 'absolute',
backgroundColor: 'white',
borderColor: 'black',
elevation: 5,
height: SCREEN_HEIGHT,
width: SCREEN_WIDTH - 40,
alignSelf: 'flex-end',
marginTop: 60,
//for ios
shadowColor: 'black',
shadowOpacity: 0.3,
shadowOffset: { width: 3, height: 3 },
shadowRadius: 4,
}
しかし、私はこのビューと対話できません。ビューの外に押されたときにそれを却下する方法!
更新を確認してください。 – Yasir
上にオーバーレイを追加しているため、この問題が発生しています。私の編集を参照してください。私は正しい場所に追加したかどうかわからないので、あなたはそのポジションでプレーしなければならないかもしれません。うまくいけば、アイデアを得るでしょう。 – sfratini
お返事ありがとうございます。私はそんなことはできないだろう。 "JSXは1つの親を持たなければならない"と私は単一のビューでそれをラップする場合、それは動作しません、それはポップオーバービュー自体ではなく、バックグラウンドで適用されますが、私は条件ビューの上に配置し、更新プログラムに示されているとおりです。残っている唯一のことは、押されたときにシャドウビューを閉じることです。 – Yasir