原文:http://blog.csdn.net/zzcchunter/article/details/8002285
popWinPlaylist.showAtLocation(vv_main, Gravity.TOP|Gravity.LEFT, 0, 150);
popWinPlaylist.setFocusable(true);
popWinPlaylist.update();
这下出现了 popupwindow 意外的地方不能点击了
最近项目中有用PopupWindow。我在其中添加一个ListView放入PopupWindow中,然后对对PopupWindow设置了setFocusable(true)让PopupWindow获得了焦点。初始化PopupWindow
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.如下:
实例化按钮
imgbtn=(ImageButton)map.findViewById(R.id.imgBtn);
imgbtn.setOnClickListener(this);//注册事件
parameterPop.setOutsideTouchable(true);
selectListAdapter adapter1=new selectListAdapter(this,showItem);
parameter_list.setAdapter(adapter1);
parameter_list.setOnItemClickListener(new OnItemClickListener(){
@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(){
@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 设置监听代码如下:
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显示时 无法响应按手机返回等键了!
分享到:
相关推荐
本篇将详细介绍如何在用户点击`ListView`时弹出一个包含`PopupWindow`的弹出框,并且这个`PopupWindow`内还具有`ListView`的右滑删除功能。 首先,我们需要创建`PopupWindow`。`PopupWindow`的构造函数通常接收三个...
为了实现点击外部区域关闭`PopupWindow`,我们需要在创建`PopupWindow`时设置`touchable`属性为`true`,并添加一个触摸监听器,监听到外部触摸事件时调用`dismiss()`方法。对于Back键取消,我们可以在`Activity`中...
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,为用户提供临时的信息或者交互操作。本示例“PopupWindow_ListView_Singleselect.zip”主要展示了如何结合`PopupWindow`与`...
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来实现各种形式的弹出窗口,如下拉菜单、提示框等。本教程将详细讲解如何使用`PopupWindow`来创建一个以`ListView`形式展示的菜单。首先,我们需要...
4. **交互**:默认情况下,`PopupWindow`不响应触摸事件,可以通过设置`setFocusable(true)`使其可聚焦,从而能够响应触摸事件和键盘事件。 `ListView`是Android中的一个列表视图控件,用于展示大量数据的列表。它...
3. **处理ListView的事件**:为了响应用户的点击事件,可以为`ListView`设置一个`OnItemClickListener`,在`onItemClick()`方法中执行相应的逻辑。 结合`PopupWindow`与`ListView`的示例代码可能如下: ```java //...
`PopupWindow`是Android系统提供的一个轻量级窗口,它可以显示在屏幕上的任意位置,用于创建浮动、弹出式的UI组件。在本教程中,我们将深入探讨如何使用`PopupWindow`来构建一个以`ListView`形式展示的菜单。 首先...
点击ListView弹出PopupWindow仿腾讯新闻
在Android开发中,PopupWindow是一个非常实用的组件,它能够创建一个浮动的窗口,通常用于在主界面之上显示一些临时性的信息或者交互操作。在这个场景中,我们将探讨如何在PopupWindow中使用ListView来展示数据,并...
本文将深入探讨如何在PopupWindow中显示一个自适应的ListView,使内容可以根据数据源动态调整。 首先,我们需要了解PopupWindow的基本用法。PopupWindow类在`android.widget.PopupWindow`包中,通过实例化...
通过以上步骤,你就可以在PopupWindow中集成一个可动态跳跃item的ListView了。这个功能可以用于创建各种有趣的交互,如搜索建议、下拉菜单等。注意在实际应用中,要充分考虑用户体验和性能,避免不必要的计算和过度...
在Android开发中,PopupWindow是一个非常实用的组件,它能够创建一种浮现在当前视图之上的窗口效果,常用于实现下拉菜单、提示框等。本篇将详细讲解如何利用PopupWindow实现一个具有泡泡效果,并且包含ListView的...
结合ListView和PopupWindow,我们可以创建一个类似微信下拉菜单的交互体验,用户在某个操作后(如点击按钮)弹出包含多个选项的PopupWindow,每个选项对应ListView的一个列表项。通过这种方式,开发者可以为用户提供...
为了实现在PopupWindow中显示ListView,首先需要创建一个PopupWindow对象。以下是一段示例代码: ```java private void popAwindow(View parent) { if (window == null) { LayoutInflater layoutInflater = ...
在Android开发中,创建一个类似美团、淘宝或百度糯米的多级分类菜单是常见的需求,这种功能能够提供用户友好的导航体验。本文将详细介绍如何利用`PopupWindow`结合两个`ListView`来实现这一效果。 首先,`...
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,通常用于实现下拉菜单、提示信息等效果。本示例着重讲解如何将`ListView`嵌套在`PopupWindow`中,并解决`ListView`宽度自适应的...
在Android开发中,PopupWindow是一种常用的UI组件,它可以在屏幕上的任意位置弹出一个窗口,通常用于实现下拉菜单、浮层提示等效果。当需要在PopupWindow中展示ListView时,自适应屏幕尺寸和内容是必不可少的技术...
2. 设计布局:为ListView的每一项创建一个布局文件,这将决定每个条目的外观。 3. 绑定数据:在Activity或Fragment中实例化Adapter,传入数据集,然后设置给ListView的`setAdapter()`方法。 接下来是GridView,它与...
`PopupWindow`是Android中的一个类,它允许开发者创建可弹出的窗口,这种窗口可以在屏幕上的任意位置显示,并且可以设置背景透明或者不透明,适合用来创建各种临时的、浮动的UI元素。在我们的场景中,`PopupWindow`...
AndroidListView+PopupWindow实现item点击弹出PopupWindow 博客地址:https://blog.csdn.net/dreams_deng/article/details/104618270