首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react-native的react导航中制作下拉菜单?

如何在react-native的react导航中制作下拉菜单?
EN

Stack Overflow用户
提问于 2019-02-14 21:17:06
回答 1查看 3.9K关注 0票数 0

我想在导航栏中制作下拉菜单,就像WhatsApp一样。一些下拉菜单在导航栏内,另一些在导航栏外。下拉菜单项的按钮不会触发外部导航栏,这是问题所在。

使用React导航,我为导航设置了navigationOption,从它的子级开始包含下拉菜单,这是选项卡导航栏,因为我想要它下面的选项卡导航栏,就像WhatsApp一样。我还设置了覆盖整个应用程序的透明TouchableHiglight。因此,如果我按下除菜单按钮以外的任何位置,它将隐藏下拉菜单。就像WhatsApp一样。这是我的React-Native应用程序的代码:

代码语言:javascript
复制
class DropdownMenu extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isHide: true
    }
  }

  render() {
  if (this.state.isHide) {
    return ( 

      //display menu icon

      <TouchableHighlight onPress={()=>this.setState({isHide: false})}>  
        <Image source={require("./ic-menu.png")} />
      </TouchableHighlight>
    )}else{
    return ( 

      //show menu items

      <View style={styles.coverPage}>  
        <TouchableHighlight style={styles.coverPage} onPress={()=>this.setState({isHide: true})}><View></View></TouchableHighlight>

        <TouchableHighlight><Text>Members</Text></TouchableHighlight>
        <TouchableHighlight><Text>Settings</Text></TouchableHighlight>
      </View>
    )}
  }
}

然后,我通过包含下拉菜单的子级导航navigationOption来放置<DropdownMenu/>

代码语言:javascript
复制
ChildTabNav.navigationOptions = ({ navigation }) => {
  const { routeName } = navigation.state.routes[navigation.state.index];
  const headerTitle = routeName;

  return {
    headerTitle,
    headerRight: (
       <DropdownMenu/>
    )
  };
};

这几乎是我所期望的工作。下拉列表显示正确。当我按下导航栏区域的下拉菜单项时,它是work。其他按钮在导航栏外的上方,它的按钮不起作用。此外,如果在菜单项按钮下面有任何按钮,则会触发该按钮下面的按钮是否在视觉上被菜单项覆盖。我希望按钮是工作的内部或外部的导航栏。

EN

回答 1

Stack Overflow用户

发布于 2019-02-14 22:07:07

你可能想用UIManager,它是这样的(Pritish‘s answer)

代码语言:javascript
复制
import { UIManager, findNodeHandle } from 'react-native';

class Menu extends Component {
iconRef = createRef();

onError = () => {
   console.log()'
}

openMenu = () => {
  UIManager.showPopupMenu(
    findNodeHandle(this.iconRef),
    ['action1', 'action2', 'action3'],
    this.onError,
    this.props.onPress);
}

render () {
   return(
       <Icon ref={this.iconRef} onPress={this.openMenu} />
   )
}

但这只会在Android中起作用,你不会在点击外部和/或点击项目时遇到问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54691368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档