最近项目中有用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显示时 无法响应按手机返回等键了!
分享到:
相关推荐
### 实现在Android的PopupWindow中显示ListView #### 一、简介 在Android开发过程中,PopupWindow是一种非常实用的UI组件,它可以用来展示临时性的信息或者菜单等。本篇文档主要介绍如何在PopupWindow中集成一个...
在Android开发中,有时我们需要创建一个浮动窗口来展示一些临时信息或者交互,PopupWindow就是这样的一个组件。本示例将详细介绍如何在PopupWindow上显示一个ListView,并实现与之相关的交互功能,模仿QQ登录界面,...
在Android开发中,`ListView`是一种常用的组件,用于展示大量数据列表。而`PopupWindow`则是用来实现临时显示一个小窗口的工具,常用于快速操作或者下拉菜单等场景。本篇将详细介绍如何在用户点击`ListView`时弹出一...
在Android开发中,`PopupWindow` 和 `ListView` 是两种常用组件,它们分别用于实现弹出窗口和可滚动列表的功能。结合使用时,可以创建出交互性更强的UI设计,如下拉菜单、浮层选择器等。让我们深入探讨如何在Android...
在本教程中,我们将深入探讨如何使用`PopupWindow`来构建一个以`ListView`形式展示的菜单。 首先,`PopupWindow`的核心概念是它不依赖于任何父视图,而是可以直接附加到屏幕的某个像素位置。要创建一个`PopupWindow...
在Android开发中,`PopupWindow`是一个非常实用的组件,常用于实现弹出窗口的效果,如下拉菜单、浮动提示等。本项目“PopupWindow_ListView_Singleselect”结合了`PopupWindow`与`ListView`,实现了单选功能,下面...
在本案例中,我们将利用`PopupWindow`结合两个`ListView`来达成这个目的。`PopupWindow`是Android系统提供的一种可以弹出窗口的组件,它具有灵活性高、可定制性强的特点,常用于实现下拉菜单、悬浮窗口等效果。 ...
PopupWindow是Android开发中一个非常重要的组件,它允许开发者创建可弹出的窗口,通常用于显示临时信息或者作为上下文菜单。在Android应用设计中,PopupWindow可以为用户提供直观、便捷的交互方式,比如在主界面之上...
在"popdemo"这个示例项目中,可能包含了如上所述的代码,同时还会展示如何添加交互事件,比如点击按钮关闭PopupWindow,或者在PopupWindow中嵌入ListView等复杂组件。 为了使PopupWindow更加生动,我们还可以添加...
在Android开发中,`PopupWindow` 是一个非常实用的组件,它可以用来创建弹出式窗口,通常用于实现类似下拉菜单、浮动按钮等效果。在本项目中,我们将利用 `PopupWindow` 模仿UC浏览器底部的菜单设计,提供一种在用户...
此外,PopupWindow还可以与其他组件结合使用,如Spinner、ListView等,以实现更复杂的交互效果。在实际开发中,我们可能会遇到需要根据用户操作动态更新PopupWindow内容的情况,这时可以通过重新设置PopupWindow的...
- PopupWindow不能直接设置透明背景,否则可能无法响应触摸事件。可以通过设置半透明背景解决。 - 如果PopupWindow超过屏幕大小,可能需要手动调整位置以适应屏幕。 综上所述,PopupWindow在Android开发中有着...
PopupWindow在Android开发中是一种非常常用的组件,它用于创建弹出式窗口,通常用作对话框、下拉菜单或者快捷操作按钮。这个组件允许开发者在应用程序的任何位置显示一个浮动的视图,提供了灵活的布局和交互方式。...
PopupWindow是Android开发中一个非常重要的组件,它允许开发者在界面上创建...在文件"PopupWindowText"中,可能包含了更多关于PopupWindow的使用示例和代码片段,通过学习这些内容,你可以更深入地理解和掌握这一组件。
PopupWindow在Android开发中是一种非常实用的组件,它允许开发者创建弹出式窗口,可以用于显示各种临时信息或交互界面,比如下拉列表。在安卓应用的毕业设计或项目实战中,PopupWindow常用于实现丰富的用户交互体验...
在Android应用开发中,PopupWindow是一个非常实用的组件,它允许开发者在屏幕任意位置弹出一个窗口,通常用于实现各种快捷菜单、下拉列表等效果。这个“Android--开发--PopupWindow下拉列表”资源包可能包含了一系列...
在Android开发中,`PopupWindow`是一个非常实用的组件,常用于实现各种临时显示的对话框效果,如底部弹出菜单、提示信息等。本文将深入探讨如何利用`PopupWindow`来实现从屏幕底部弹出的自定义效果,以及相关的编程...
在Android开发中,`PopupWindow` 是一个非常实用的组件,它可以用来创建各种弹出式视图,如菜单、对话框或自定义的下拉框。本知识点将深入讲解如何利用`PopupWindow`来实现一个自定义的下拉框。 首先,`PopupWindow...