popuwindow的显示与隐藏问题

最近 项目中用到点击“更多”弹出一个Popuwindow,当点击外部区域是消失,点击更多按钮Popuwindow假如显示则隐藏,隐藏则显示,一开始设置了更多的点击事件,发现有问题,当window显示的时候正常它应该隐藏,结果却没有隐藏,因为当点击更多的时候首先走的是popuwindow的外部onTouch事件,这个时候popuwindow内部会将window个dismiss,解决办法如下:直接设置更多的OnTouch事件:核心的代码如下:


 lin.getChildAt(lin.getChildCount() - 1).setOnTouchListener(new View.OnTouchListener() {
           @Override
           public boolean onTouch(View view, MotionEvent motionEvent) {
               if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){
                   Log.e("跟多", "进入了更多的onTouch()");
                   if(moreWindo==null) {
                       moreWindo = new PopupWindow(MainActivity.this);
                       View popView = layoutInflater.inflate(R.layout.more_two_dialog, null);
/*           ListView listView = (ListView) popView.findViewById(R.id.list);
           List<String> list = new ArrayList();
           list.add("15分钟");
           list.add("2小时");
           list.add("周K");
           list.add("月K");*/
                       //PixelUtil.dp2px(MainActivity.this,80
                       //listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.item_more_dialog, list));
                       //  listView.setAdapter(new MoreAdapter(MainActivity.this));
                       moreWindo = new PopupWindow(popView, PixelUtil.dp2px(MainActivity.this, 80), WindowManager.LayoutParams.WRAP_CONTENT);
                       moreWindo.setBackgroundDrawable(new ColorDrawable(0));
                       moreWindo.setContentView(popView);
                       moreWindo.setOutsideTouchable(true);
                       moreWindo.showAsDropDown(view, -30, ((int) view.getY() - 30));
                   }else{
                       if(moreWindo.isShowing()){
                           moreWindo.dismiss();
                       }else{
                           moreWindo.showAsDropDown(view, -30, ((int) view.getY() - 30));
                       }
                   }

               }
               return true;
           }
       });




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值