NavigationView的头部的事件监听-创新互联

现在App的UI设计中Drawerlayout+NavigationView是一个比较常用的设计了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件监听,而今天碰到一个需要是要在header中增加事件监听。

10年积累的网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有宝兴免费网站建设让你可以放心的选择与我们合作。

需求如下:点击图片,在底部弹出一个弹出窗口。

NavigationView的头部的事件监听

侧边导航栏布局:

NavigationView的头部的事件监听

 
    

NavigationView的头部的事件监听

NavigationView的头部的事件监听



    
    

NavigationView的头部的事件监听

那显然我们得要获取到这个p_w_picpath的id,从而给它设置点击事件监听。

然而,当我用ButterKnife去绑定它的时候,直接就报错了

NavigationView的头部的事件监听

也对,这个时候侧边栏还没有打开

接下来我就想着要在侧边栏打开的情况下去获取到这个id,怎么监听侧边栏是否打开呢,我尝试了这个方法

NavigationView的头部的事件监听

(窃喜),在onDrawerOpened中写入进行一波findViewById操作应该就可以了吧。

然并卵。。。

点击头像毫无反应。

最后,那我们就不在xml中静态导入header了还不行吗,我们直接在代码中直接导入header的布局,然后再来获取它里面图片的id,并为其设置事件监听,终于KO。

此处需要删除原先的这一行:

app:headerLayout="@layout/nav_header_main"

NavigationView的头部的事件监听

 
    

NavigationView的头部的事件监听

onCreate()中加入下面代码:

NavigationView的头部的事件监听

 View drawerView = navigationView.inflateHeaderView(R.layout.nav_header_main);
        CircleImageView account = (CircleImageView) drawerView.findViewById(R.id.account);
        account.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                bottomPopupOption = new BottomPopupOption(TabHostActivity.this);
                bottomPopupOption.setItemText("拍照","选择相册");
                bottomPopupOption.showPopupWindow();
            }
        });

NavigationView的头部的事件监听

最终的效果图:

 NavigationView的头部的事件监听

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:NavigationView的头部的事件监听-创新互联
路径分享:http://scyanting.com/article/dgdsos.html