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
分享到:
相关推荐
可以设置`setTouchInterceptor()`来拦截触摸事件,或者设置`setOutsideTouchable()`让PopupWindow在外部被触摸时自动消失。 6. **PopupWindow的生命周期** PopupWindow没有自己的生命周期,它的显示和隐藏完全依赖...
自定义PopupWindow通常涉及到以下几个方面: 1. **样式定制**:通过修改PopupWindow的背景、边框、阴影等属性,使其与应用主题风格保持一致。这可以通过设置PopupWindow的背景资源,或者自定义布局中的样式来实现。...
在Android中,Activity的onKeyDown()方法可以捕获硬件按键的按下事件,包括返回键。因此,我们需要重写这个方法,检查Keycode.KEYCODE_BACK(返回键的代码)并处理对应的逻辑。 ```java @Override public boolean ...
popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { popupWindow....
为此,可以监听`onDismiss()`方法来捕获PopupWindow关闭的时刻: ```java popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { // 在这里处理...
- 考虑到不同设备的屏幕尺寸,确保PopupWindow的大小和位置适应各种屏幕。 - 对于复杂的PopupWindow,可能需要考虑线程同步问题,尤其是在涉及到数据加载时。 6. **资源文件分析**: - "124328fz05f2lvl8vbx722....
通过阅读和理解这些代码,将有助于加深对PopupWindow用法的理解,并能灵活运用到自己的项目中。 总之,PopupWindow是Android开发中的一种强大工具,掌握其基本用法和各种定制技巧,能帮助我们创建出更美观、易用的...
4. **触摸拦截**:为了不让按钮上方出现阴影,你可能还需要阻止PopupWindow向上延伸到按钮区域。这可以通过覆写`onTouchEvent`方法并处理触摸事件来实现。 通过以上步骤,你可以实现一个在按钮下方弹出且只有下方有...
3. **设置背景色**:如果布局背景颜色不足以满足需求,我们可以直接在代码中修改PopupWindow的背景。这可以通过`setBackgroundDrawable()`方法实现,传入一个ColorDrawable对象,如: ```java popupWindow....
PopupWindow是Android开发中一个非常重要的组件,它允许开发者创建可弹出的窗口,通常用于显示临时信息或者作为上下文菜单。在Android应用设计中,PopupWindow可以为用户提供直观、便捷的交互方式,比如在主界面之上...
3. **设置是否能获得焦点和触摸穿透**:为了让PopupWindow能够响应点击事件,我们需要设置它能获取焦点,并且不穿透触摸事件到下方的View。 ```java popupWindow.setFocusable(true); popupWindow....
popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { popupWindow....
最后,关于压缩包中的文件名"Popwindo",可能是笔误或者文件名不完整,正常情况下,应该包含具体的类文件或资源文件,如PopupWindow的布局文件或Java代码。在实际项目中,这些文件会包含PopupWindow的实现细节,如...
`showAsDropDown()`方法默认将PopupWindow的底部对齐到锚点的顶部,可以通过传入额外的参数来调整水平和垂直偏移量。例如: ```java int[] anchorXY = new int[2]; anchorView.getLocationOnScreen(anchorXY); ...
2. 考虑到PopupWindow可能覆盖到其他控件,需要处理好触摸事件的传递,避免遮挡底层的交互。 3. 如果PopupWindow内容区域较大,可能需要考虑滚动功能,可以嵌套ScrollView或NestedScrollView。 4. 在屏幕旋转或设备...
在创建PopupWindow时,我们通常需要传入一个Context对象,这个对象决定了PopupWindow能否成功添加到窗口管理器中。如果使用的是Activity的Context,那么PopupWindow可以直接显示;但如果使用了Application或者...
“遮罩”是指在PopupWindow背后添加一个半透明层,起到遮挡背景和突出弹出内容的作用;“半显示”可能是指PopupWindow部分内容先显示,然后逐步完全展示,通常会配合动画效果。 实现这样的效果,我们需要以下步骤:...