`
crazier9527
  • 浏览: 1004798 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

popupwindow 捕获不到 setTouchInterceptor(转)

阅读更多

Popupwindow的使用方法概要如下:
PopupWindow window;
View v = this.getLayoutInflater().inflate(R.layout.popupwindow, null);
window = new PopupWindow(v, 200, 300);
        window.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
设置长宽并非必须,但是不设置可能会导致图片显示尺寸不合适。
        window.setOutsideTouchable(true);
不设置此项则下面的捕获window外touch事件就无法触发。
        Drawable win_bg = this.getResources().getDrawable(R.drawable.bg);
window.setBackgroundDrawable(win_bg);
这个很WS,即使在XML里设置了background也认为是没有背景,必须在这里指定背景,如果不指定同样无法触发下面的Touch监听事件。

        window.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
window.dismiss();
return false;
}
});
在onCreate里设置好这些后,在某个button的onClick里调用window.showAsDropDown(v);即可(v是onClick函数的参数)

如果CustomPopupWindow继承了PopupWindow,而QuickAction继承了CustomPopupWindow的话,在QuickAction里不要用setContentView,不然可能图片会变得很大,比实际尺寸还大,目前原因未明。
QuickAction的XML文件,最外层的要用LinearLayout,不能用RelativeLayout,不然图片会很大,原因未明。

用LinearLayout时会出现上面的元素覆盖下面的,比如上面一个listview下面一个button,listview的元素多到覆盖屏幕时就会覆盖掉button,可以把LinearLayout改成RealtiveLayout即可。

 

转自:http://hi.baidu.com/jacky_java/blog/item/37f5915453ff479f8c543023.html

分享到:
评论
1 楼 nottoobad 2011-10-12  
写的不错,谢谢了!

相关推荐

    PopupWindow

    可以设置`setTouchInterceptor()`来拦截触摸事件,或者设置`setOutsideTouchable()`让PopupWindow在外部被触摸时自动消失。 6. **PopupWindow的生命周期** PopupWindow没有自己的生命周期,它的显示和隐藏完全依赖...

    自定义popupWindow修改版

    自定义PopupWindow通常涉及到以下几个方面: 1. **样式定制**:通过修改PopupWindow的背景、边框、阴影等属性,使其与应用主题风格保持一致。这可以通过设置PopupWindow的背景资源,或者自定义布局中的样式来实现。...

    Android PopupWindow使用示例

    popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { popupWindow....

    让popupwindow显示在view的上方并与该view水平居中对齐

    通过阅读和理解这些代码,将有助于加深对PopupWindow用法的理解,并能灵活运用到自己的项目中。 总之,PopupWindow是Android开发中的一种强大工具,掌握其基本用法和各种定制技巧,能帮助我们创建出更美观、易用的...

    Android开发-自定义View-AndroidStudio(七)popupwindow

    为此,可以监听`onDismiss()`方法来捕获PopupWindow关闭的时刻: ```java popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { // 在这里处理...

    安卓popupwindow相关-仿微信popupwindow.zip

    - 考虑到不同设备的屏幕尺寸,确保PopupWindow的大小和位置适应各种屏幕。 - 对于复杂的PopupWindow,可能需要考虑线程同步问题,尤其是在涉及到数据加载时。 6. **资源文件分析**: - "124328fz05f2lvl8vbx722....

    Android PopupWindow与Activity之间的数据传递.zip

    最后,关于压缩包中的文件名"Popwindo",可能是笔误或者文件名不完整,正常情况下,应该包含具体的类文件或资源文件,如PopupWindow的布局文件或Java代码。在实际项目中,这些文件会包含PopupWindow的实现细节,如...

    android popupwindow 底部灰色背景

    3. **设置背景色**:如果布局背景颜色不足以满足需求,我们可以直接在代码中修改PopupWindow的背景。这可以通过`setBackgroundDrawable()`方法实现,传入一个ColorDrawable对象,如: ```java popupWindow....

    Android从屏幕底部弹出PopupWindow

    2. 考虑到PopupWindow可能覆盖到其他控件,需要处理好触摸事件的传递,避免遮挡底层的交互。 3. 如果PopupWindow内容区域较大,可能需要考虑滚动功能,可以嵌套ScrollView或NestedScrollView。 4. 在屏幕旋转或设备...

    PopupWindow之显示顶层对话框代码

    PopupWindow是Android开发中一个非常重要的组件,它允许开发者创建可弹出的窗口,通常用于显示临时信息或者作为上下文菜单。在Android应用设计中,PopupWindow可以为用户提供直观、便捷的交互方式,比如在主界面之上...

    PopupWindow的使用

    3. **设置是否能获得焦点和触摸穿透**:为了让PopupWindow能够响应点击事件,我们需要设置它能获取焦点,并且不穿透触摸事件到下方的View。 ```java popupWindow.setFocusable(true); popupWindow....

    仿微信PopupWindow效果

    popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { popupWindow....

    PopupWindow实现对话框的位置变化

    `showAsDropDown()`方法默认将PopupWindow的底部对齐到锚点的顶部,可以通过传入额外的参数来调整水平和垂直偏移量。例如: ```java int[] anchorXY = new int[2]; anchorView.getLocationOnScreen(anchorXY); ...

    PopupWindow嵌套Demo

    在创建PopupWindow时,我们通常需要传入一个Context对象,这个对象决定了PopupWindow能否成功添加到窗口管理器中。如果使用的是Activity的Context,那么PopupWindow可以直接显示;但如果使用了Application或者...

    窗帘式 从上往下弹出popupwindow带遮罩

    “遮罩”是指在PopupWindow背后添加一个半透明层,起到遮挡背景和突出弹出内容的作用;“半显示”可能是指PopupWindow部分内容先显示,然后逐步完全展示,通常会配合动画效果。 实现这样的效果,我们需要以下步骤:...

    popupwindow实现按钮下方阴影

    4. **触摸拦截**:为了不让按钮上方出现阴影,你可能还需要阻止PopupWindow向上延伸到按钮区域。这可以通过覆写`onTouchEvent`方法并处理触摸事件来实现。 通过以上步骤,你可以实现一个在按钮下方弹出且只有下方有...

    PopupWindowDemo

    开发者可能还需要关注`PopupWindow`的触摸穿透问题,通过`setTouchInterceptor`或`setClippingEnabled`来控制。 总的来说,`PopupWindowDemo`是一个很好的实例,它展示了如何在Android应用中创建并使用`PopupWindow...

Global site tag (gtag.js) - Google Analytics