popupWindow之添加控件后(如button,raidobutton等),点击popupWindow背景透明的BUG处理办法...

如题:

  今天开发中遇到popupWindow的一个bug,在popupWindow中添加了一个radioGroup,radioGroup中添加了两个radiobutton,两个radiobutton的样式都改成自己定义的了,在测试的时候发现了一个问题,在popupWindow中点击radiobutton的时候,点击的那一块背景变成透明的了,感觉非常恶心,发现时popupwindow.setBackgroundDrawable(new ColorDrawable())惹的祸,就四处寻找解决方法,发现只要popupWindow.setBackgroundDrawable(null)或者不要这句时点击时就没有问题。但是又引发了点击popupwindow外面和返回键popupwindow不消失问题,问题明确之后,用以下方法解决了此问题:  

popupWindowSort.setBackgroundDrawable(null);
final View contentView = popupWindowSort.getContentView();
// 设置触摸事件
contentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int x = (int) event.getX();
final int y = (int) event.getY();

if ((event.getAction() == MotionEvent.ACTION_DOWN) && ((x < 0) || (x >= popupWindowSort.getWidth()) || (y < 0) || (y >= popupWindowSort.getHeight()))) {
popupWindowSort.dismiss();
return true;
} else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
popupWindowSort.dismiss();
return true;
} else {
return contentView.onTouchEvent(event);
}
}
});

用以上代码解决了点击popupwindow之外区域popupwindow不消失的问题,下面得解决响应返回键事件的问题:

 

View view = LayoutInflater.from(this).inflate(R.layout.layout_sort, null);//popupwindow的布局文件

view.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// 手机键盘上的返回键
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
popupWindowSort.dismiss();
break;
}
return false;
}
});

到此,用到以上两段代码终于成功解决了popupwindow的这个bug!

转载于:https://www.cnblogs.com/feelaway/p/3462784.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值