`

【转】创建一个popupwindow,在里面放置一个listview,并且使listview可以响应点击事件

阅读更多
  1. popWinPlaylist.showAtLocation(vv_main, Gravity.TOP|Gravity.LEFT, 0, 150);  
  2. popWinPlaylist.setFocusable(true);  
  3. popWinPlaylist.update();  
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代码  收藏代码
  1. parameterView=this.getLayoutInflater().inflate(R.layout.parameterpopup, null);  
  2.             parametPopLayout=(LinearLayout)parameterView.findViewById(R.id.parametPopLayout);  
  3.           
  4.             parameter_list=(ListView)parameterView.findViewById(R.id.parameter_list);  
  5.               
  6.             parameterPop = new PopupWindow(parameterView, 140, ViewGroup.LayoutParams.WRAP_CONTENT);  
  7.             parameterPop.setOutsideTouchable(true);  

 

 

这时候问题来了当你点击页面中其它控件是无法响应的。发现很多人都有遇到这个困惑。其实你可以通过pw(PopupWindow对象).getContextView()拿到他的父视图。然后通过给父视图注册事件 让pw失去焦点 。我项目中是通过一个按钮点击之后显示pw.如下:

   实例化按钮

Java代码  收藏代码
  1. imgbtn=(ImageButton)map.findViewById(R.id.imgBtn);  
Java代码  收藏代码
  1. imgbtn.setOnClickListener(this);//注册事件  
Java代码  收藏代码
  1. parameterPop.setOutsideTouchable(true);  
  2.    selectListAdapter adapter1=new selectListAdapter(this,showItem);  
  3.    parameter_list.setAdapter(adapter1);  
  4.    parameter_list.setOnItemClickListener(new OnItemClickListener(){  
Java代码  收藏代码
  1.     @Override  
  2.     public void onItemClick(AdapterView<?> parent, View view,  
  3.       int position, long id) {  
  4.      // TODO Auto-generated method stub  
  5.        
  6.      parameterPop.dismiss();  
  7.     }  
  8.       
  9.    });   
  10.    if(parameterPop.isShowing()){  
  11.     parameterPop.dismiss();  
  12.    }else{  
  13.     showPop=true;  
  14.       
  15.     parameterPop.showAtLocation(v, Gravity.LEFT, 1040);  
  16.     parameterPop.setFocusable(true);  
  17.     parameterPop.update();  
  18.     //做一个不在焦点外的处理事件监听  
  19.     parameterPop.getContentView().setOnTouchListener(new OnTouchListener(){  
Java代码  收藏代码
  1.      @Override  
  2.      public boolean onTouch(View v, MotionEvent event) {  
  3.       // TODO Auto-generated method stub  
  4.       parameterPop.setFocusable(false);  
  5.       parameterPop.dismiss();  
  6.       return true;  
  7.      }  
  8.        
  9.     });  
  10.    }  

 从而解决了这个问题。还有一个问题就是如果当Pw显示之后。你想按返回等系统键也是无法响应的。那我们应该如何来处理咧?相信看了上面代码的应该会明白。要响应谁就交给谁。setFocusable(true)此时已经让Pw获取了焦点。解决办法:因为Pw里放置了ListView。可以利用setOnKeyListener对Pw里的ListView 设置监听代码如下:

Java代码  收藏代码
  1. parameter_list.setOnKeyListener(new OnKeyListener(){  
  2.   
  3.                 @Override  
  4.                 public boolean onKey(View v, int keyCode, KeyEvent event) {  
  5.                     // TODO Auto-generated method stub  
  6.                     parameterPop.dismiss();  
  7.                     return false;  
  8.                 }  
  9.                   
  10.             });  

 

就能解决当Pw显示时 无法响应按手机返回等键了!

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android 点击listview弹出popupwindow弹出框

    本篇将详细介绍如何在用户点击`ListView`时弹出一个包含`PopupWindow`的弹出框,并且这个`PopupWindow`内还具有`ListView`的右滑删除功能。 首先,我们需要创建`PopupWindow`。`PopupWindow`的构造函数通常接收三个...

    PopupWindow和ListView配合使用

    为了实现点击外部区域关闭`PopupWindow`,我们需要在创建`PopupWindow`时设置`touchable`属性为`true`,并添加一个触摸监听器,监听到外部触摸事件时调用`dismiss()`方法。对于Back键取消,我们可以在`Activity`中...

    PopupWindow_ListView_Singleselect.zip

    在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,为用户提供临时的信息或者交互操作。本示例“PopupWindow_ListView_Singleselect.zip”主要展示了如何结合`PopupWindow`与`...

    Android之用PopupWindow实现弹出listview形式的菜单

    在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来实现各种形式的弹出窗口,如下拉菜单、提示框等。本教程将详细讲解如何使用`PopupWindow`来创建一个以`ListView`形式展示的菜单。首先,我们需要...

    PopupWindow_ListView_Singleselect.zip_ListView_PopupWindow ListV

    4. **交互**:默认情况下,`PopupWindow`不响应触摸事件,可以通过设置`setFocusable(true)`使其可聚焦,从而能够响应触摸事件和键盘事件。 `ListView`是Android中的一个列表视图控件,用于展示大量数据的列表。它...

    PopupWindow+ListView

    3. **处理ListView的事件**:为了响应用户的点击事件,可以为`ListView`设置一个`OnItemClickListener`,在`onItemClick()`方法中执行相应的逻辑。 结合`PopupWindow`与`ListView`的示例代码可能如下: ```java //...

    Android用PopupWindow实现弹出listview形式菜单

    `PopupWindow`是Android系统提供的一个轻量级窗口,它可以显示在屏幕上的任意位置,用于创建浮动、弹出式的UI组件。在本教程中,我们将深入探讨如何使用`PopupWindow`来构建一个以`ListView`形式展示的菜单。 首先...

    点击ListView弹出PopupWindow仿腾讯新闻

    点击ListView弹出PopupWindow仿腾讯新闻

    popupwindow中用listView绑定数据并显示在View上方

    在Android开发中,PopupWindow是一个非常实用的组件,它能够创建一个浮动的窗口,通常用于在主界面之上显示一些临时性的信息或者交互操作。在这个场景中,我们将探讨如何在PopupWindow中使用ListView来展示数据,并...

    popupwindow中显示listview自适配

    本文将深入探讨如何在PopupWindow中显示一个自适应的ListView,使内容可以根据数据源动态调整。 首先,我们需要了解PopupWindow的基本用法。PopupWindow类在`android.widget.PopupWindow`包中,通过实例化...

    PopupWindow+ListView+在item顶部与底部跳跃

    通过以上步骤,你就可以在PopupWindow中集成一个可动态跳跃item的ListView了。这个功能可以用于创建各种有趣的交互,如搜索建议、下拉菜单等。注意在实际应用中,要充分考虑用户体验和性能,避免不必要的计算和过度...

    Android PopupWindow泡泡效果(有listview)

    在Android开发中,PopupWindow是一个非常实用的组件,它能够创建一种浮现在当前视图之上的窗口效果,常用于实现下拉菜单、提示框等。本篇将详细讲解如何利用PopupWindow实现一个具有泡泡效果,并且包含ListView的...

    ListView和PopupWindow集合模仿的微信的

    结合ListView和PopupWindow,我们可以创建一个类似微信下拉菜单的交互体验,用户在某个操作后(如点击按钮)弹出包含多个选项的PopupWindow,每个选项对应ListView的一个列表项。通过这种方式,开发者可以为用户提供...

    实现在android的popupwindow中显示listview.docx编程资料

    为了实现在PopupWindow中显示ListView,首先需要创建一个PopupWindow对象。以下是一段示例代码: ```java private void popAwindow(View parent) { if (window == null) { LayoutInflater layoutInflater = ...

    使用PopupWindow + 2个ListView实现仿 美团/淘宝/百度糯米 多级分类菜单效果

    在Android开发中,创建一个类似美团、淘宝或百度糯米的多级分类菜单是常见的需求,这种功能能够提供用户友好的导航体验。本文将详细介绍如何利用`PopupWindow`结合两个`ListView`来实现这一效果。 首先,`...

    PopupWindow嵌套ListView

    在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,通常用于实现下拉菜单、提示信息等效果。本示例着重讲解如何将`ListView`嵌套在`PopupWindow`中,并解决`ListView`宽度自适应的...

    popupWindow显示listview后,自适配

    在Android开发中,PopupWindow是一种常用的UI组件,它可以在屏幕上的任意位置弹出一个窗口,通常用于实现下拉菜单、浮层提示等效果。当需要在PopupWindow中展示ListView时,自适应屏幕尺寸和内容是必不可少的技术...

    自定义的listview、GridView、 Popupwindow简易demo

    2. 设计布局:为ListView的每一项创建一个布局文件,这将决定每个条目的外观。 3. 绑定数据:在Activity或Fragment中实例化Adapter,传入数据集,然后设置给ListView的`setAdapter()`方法。 接下来是GridView,它与...

    PopupWindow+ListView实现Android搜索框

    `PopupWindow`是Android中的一个类,它允许开发者创建可弹出的窗口,这种窗口可以在屏幕上的任意位置显示,并且可以设置背景透明或者不透明,适合用来创建各种临时的、浮动的UI元素。在我们的场景中,`PopupWindow`...

    AndroidListView+PopupWindow实现item点击弹出PopupWindow

    AndroidListView+PopupWindow实现item点击弹出PopupWindow 博客地址:https://blog.csdn.net/dreams_deng/article/details/104618270

Global site tag (gtag.js) - Google Analytics