react-native - React 左侧出现的原生三点菜单
问题描述
我正在使用 react-native-paper 创建一个屏幕。当我使用带有三个点菜单的 Appbar 作为标题时,选项出现在屏幕的错误一侧。它应该出现在右侧,而不是左侧。
我的代码:
import React, { useEffect,useState } from 'react'
import {
SafeAreaView,
StyleSheet,
Platform
} from 'react-native'
import {connect} from 'react-redux'
...
import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';
import {Appbar,Menu} from 'react-native-paper'
import MComponent from './subpages/component'
const Tab = createMaterialTopTabNavigator();
const TAG = 'TAG'
const MPage = ({ navigation,handleLoadData,isLoading }) => {
useEffect(() => {
handleLoadData()
}, [])
const [openMenu,setOpenMenu] = useState(false)
return (
<SafeAreaView style={styles.container}>
<Menu
style={styles.menu}
visible={openMenu}
onDismiss={()=>{
setOpenMenu(false)
}}
anchor={
<Appbar.Header
statusBarHeight={0}
>
<Appbar.BackAction
onPress={()=>{
navigation.goBack()
}}
/>
<Appbar.Content
title="App Screen"
/>
<Appbar.Action icon="dots-vertical" onPress={()=>{
setOpenMenu(true)}}
/>
</Appbar.Header>
}
>
<Menu.Item onPress={() => {
setOpenMenu(false)
handleLoadServiceOrders()
}} title="Option 1" />
<Menu.Item onPress={() => {}} title="Option 2" />
</Menu>
<Loading
loading={isLoading}
/>
<Tab.Navigator>
<Tab.Screen name={OPTIONS.PAGE_A} component={MComponent} />
<Tab.Screen name={OPTIONS.PAGE_B} component={MComponent } />
</Tab.Navigator>
</SafeAreaView>
)
}
const styles = StyleSheet.create({
container: {
marginTop: Platform.OS === 'android' ? 30 : 0,
justifyContent: 'center',
flex:1
}
})
...
图片显示发生了什么:
https ://imgur.com/a/xq3Gcac
我正在使用 react-native 和 react-native-paper lib 来创建 Appbar。Menu 组件也属于 react-native-paper。
解决方案
菜单位置是相对于其锚点设置的。在您的原始示例中,整个 Appbar 是锚点,因此菜单出现在其左侧。相反,您可以将锚点设置为 Appbar.Action,这将使菜单出现在垂直点旁边。这是使用菜单的类似示例:
<Card.Title
title={item.name}
subtitle={item.description}
style={{overflow: 'visible'}}
left={(props) => <Avatar.Icon {...props} icon={require('../assets/icon.png')} />}
right={(props) =>
<Menu
visible={menuvisible}
onDismiss={handleMenuDismiss}
anchor={ <IconButton {...props} icon="dots-vertical" onPress={handleMenuShow}></IconButton>}
>
<Menu.Item onPress={() => {alert('item1')}} title="Item 1" />
<Menu.Item onPress={() => {}} title="Item 2" />
<Menu.Item onPress={() => {}} title="Item 3" />
</Menu>
}
/>
推荐阅读
- pic - 无法将 UART 连接到 PIC24FJ128GA204 上的 RB6
- javascript - JS RegExp 捕获单词后不跟括号
- sql - 如何在 postgresql 中使用前导函数组合日期
- android - Admob for Android 不显示 TEST 广告和 REAL 添加奖励视频
- java - Netbeans 和 JDK 10
- android - 后退按钮和标题垂直对齐
- xpages - 从客户端注释的视图中打开 xpage 文档
- cakephp - Cakephp 3 PHPUnit ingration 测试失败后测试前
- python - 这段代码应该打印列表中唯一的元音?但为什么要打印重复的元音?
- c# - 为什么 Task.FromResult 需要显式转换?