打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
创建一个popupwindow,在里面放置一个listview,并且使listview可以响应点击事件
[html]
popWinPlaylist.showAtLocation(vv_main, Gravity.TOP|Gravity.LEFT, 0, 150);
popWinPlaylist.setFocusable(true);
popWinPlaylist.update();
这下出现了 popupwindow 意外的地方不能点击了,那么看一下文章吧
最近项目中有用PopupWindow。我在其中添加一个ListView放入PopupWindow中,然后对对PopupWindow设置了setFocusable(true)让PopupWindow获得了焦点。初始化PopupWindow
Java代码  
parameterView=this.getLayoutInflater().inflate(R.layout.parameterpopup, null);
parametPopLayout=(LinearLayout)parameterView.findViewById(R.id.parametPopLayout);
parameter_list=(ListView)parameterView.findViewById(R.id.parameter_list);
parameterPop = new PopupWindow(parameterView, 140, ViewGroup.LayoutParams.WRAP_CONTENT);
parameterPop.setOutsideTouchable(true);
这时候问题来了当你点击页面中其它控件是无法响应的。发现很多人都有遇到这个困惑。其实你可以通过pw(PopupWindow对象).getContextView()拿到他的父视图。然后通过给父视图注册事件 让pw失去焦点 。我项目中是通过一个按钮点击之后显示pw.如下:
实例化按钮
Java代码  
imgbtn=(ImageButton)map.findViewById(R.id.imgBtn);
Java代码  
imgbtn.setOnClickListener(this);//注册事件
Java代码  
parameterPop.setOutsideTouchable(true);
selectListAdapter adapter1=new selectListAdapter(this,showItem);
parameter_list.setAdapter(adapter1);
parameter_list.setOnItemClickListener(new OnItemClickListener(){
Java代码  
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
parameterPop.dismiss();
}
});
if(parameterPop.isShowing()){
parameterPop.dismiss();
}else{
showPop=true;
parameterPop.showAtLocation(v, Gravity.LEFT, 10, 40);
parameterPop.setFocusable(true);
parameterPop.update();
//做一个不在焦点外的处理事件监听
parameterPop.getContentView().setOnTouchListener(new OnTouchListener(){
Java代码  
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
parameterPop.setFocusable(false);
parameterPop.dismiss();
return true;
}
});
}
从而解决了这个问题。还有一个问题就是如果当Pw显示之后。你想按返回等系统键也是无法响应的。那我们应该如何来处理咧?相信看了上面代码的应该会明白。要响应谁就交给谁。setFocusable(true)此时已经让Pw获取了焦点。解决办法:因为Pw里放置了ListView。可以利用setOnKeyListener对Pw里的ListView 设置监听代码如下:
Java代码  
parameter_list.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
parameterPop.dismiss();
return false;
}
});
就能解决当Pw显示时 无法响应按手机返回等键了!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android 之PopupWindow的使用
JDBC连接执行MySQL存储过程报权限错误
虚拟键盘挡住了输入框怎么办?加两行代码就行
VBA常用代码解析(第三十五讲)
ListView控件入门
vb.net 让ListView、TreeView控件子项目选中后背景颜色一直不变
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服