比如这样一个PopupWindow出现的时候,按back键首先是让PopupWindow消失,第二次按才是退出 activity,准确的说是想退出activity你得首先让PopupWindow消失,因为不并是任何情况下按...区域,PopupWindow会消失的,如果没有下面的 //代码的话,你会发现,当你把PopupWindow显示出来了,无论你按多少次后退键 //PopupWindow并不会关闭...比如这样一个PopupWindow出现的时候,按back键首先是让PopupWindow消失,第二次按才是退出activity,准确的说是想退出activity你得首先让PopupWindow消失,因为不并是任何情况下按...back PopupWindow都会消失,必须在PopupWindow设置了背景的情况下 。...(true)则点击PopupWindow之外的地方PopupWindow会消失,其实这玩意儿好像一点用都没有。
为了达到PopupWindow能够自适配布局大小,可以在设置长宽时候指定: popupWindow.setWidth(LayoutParams.WRAP_CONTENT); popupWindow.setHeight... popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg)); popupWindow.setOutsideTouchable...(true); popupWindow.setAnimationStyle(android.R.style.Animation_Dialog); popupWindow.update...(); popupWindow.setTouchable(true); popupWindow.setFocusable(true); ...popupWindow.isShowing()) { popupWindow.showAsDropDown(button, 0, 0);
第一步:自定义xml文件 第二步:获取LayoutInflater对象 第三步:调用inflate()方法获取View对象 第四步:创建PopupWindow对象 第五步:调用PopupWindow的showAsDropDown...= new PopupWindow(myView, 600, 450); myView.findViewById(R.id.btn).setOnClickListener(new View.OnClickListener...() { @Override public void onClick(View v) { popupWindow.dismiss...(); } }); } PopupWindow popupWindow; public void btnClick(View v)...{ popupWindow.showAsDropDown(v); } } ?
本文通过一个实例简单介绍下PopupMenu和PopupWindow的区别和各自使用方式。...1.PopupMenu和PopupWindow PopupMenu显示效果类似上下文菜单(Menu),而PopupWindow的显示效果实际上类似对话框(Dialog),两者效果如下图所示: PopupMenu...PopupWindow显示效果 ?...4.实现PopupWindow 实现PopupWindow稍微复杂些,但是自定义性更强,它可以将任意界面设置为PopupWindow。...(1)新建布局文件layout/window_popup.xml,作为PopupWindow,其中只有4个按钮,最后一个是取消按钮,用于关闭PopupWindow <?
item> SelectPhotoPopupWindow public class SelectPhotoPopupWindow extends PopupWindow...= new PopupWindow(contentView, width, height); /*点击popupWindow范围以外的地方,让popupWindow消失...*/ // popupWindow.setOutsideTouchable(true); // popupWindow.setBackgroundDrawable...范围以外的地方,让popupWindow消失*/ this.setOutsideTouchable(true); this.setBackgroundDrawable(new...menuWindow.showAtLocation(viewAttach, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow
ViewGroup.LayoutParams.FILL_PARENT; int height = ViewGroup.LayoutParams.WRAP_CONTENT; bottomPopupWindow = new PopupWindow
popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT...); popupWindow.setFocusable(false); popupWindow.setBackgroundDrawable(new ColorDrawable...这里写图片描述 可以发现,我们的PopupWindow并没有跟随一起滚动,这是因为在调用showAtLocation的时候,PopupWindow的位置已经确定了,所以并不会跟着A的滚动而滚动。...这样的效果产品经理肯定不会同意的,所以就需要我们来动态更新PopupWindow的位置了。...我们这里只需要让PopupWindow始终在A的正上方,所以重点就是确定随着ScrollView的滚动PopupWindow的位置。
PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。..., null); PopupWindow popupWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT...); //setBackgroundDrawable必须要有,不然点击window以外区域不会消失 popupWindow.setBackgroundDrawable( getResources...().getDrawable(android.R.drawable.btn_plus)); // popupWindow.setTouchable(true); // popupWindow.setOutsideTouchable...(true); popupWindow.setFocusable(true); popupWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);
API文档 继承树: java.lang.Object ↳ android.widget.PopupWindow 概述: popupWindow,顾名思义,用作在当前Activity前弹出一个界面...公共的构造器: PopupWindow() PopupWindow(Context context) PopupWindow(Context context, AttributeSet attrs)...PopupWindow(Context context, AttributeSet attrs, int defStyle) PopupWindow(Context context, AttributeSet...//(使用较少) PopupWindow(View contentView, int width, int height) //创建一个没有获取焦点、长为width、宽为height,内容为contentView...PopupWindow(View contentView, int width, int height, boolean focusable) //类似上面那个,但第四个参数可以控制是否获取焦点 //
android.view.View.OnClickListener; 7 import android.view.ViewGroup; 8 import android.widget.Button; 9 import android.widget.PopupWindow...11 12 public class MainActivity extends Activity implements OnClickListener { 13 14 private PopupWindow...view = this.getLayoutInflater().inflate(R.layout.popup_window, null); 51 pop = new PopupWindow
Android中的spinner控件点击之后是以弹出dialog 的形式供我们选择,但我们其实更希望可以看到是下拉菜单的感觉,如下图所示: 要实现这种效果其实也不难,自定义一个popupwindow...控件就可以解决问题 在显示popupwindow时右侧箭头朝下,在popupwindow消失时右侧箭头朝右 先来看一下我自定义的popupwindow SpPopWindow.java public class...SpPopWindow extends PopupWindow implements OnClickListener{ private Context mContext; private TextView...TextView) view.findViewById(R.id.item_thirty_tv); setViewOnClick(mThreeTv,mTenTv,mThirtyTv); //当popupwindow...android:textColor="@color/black" android:padding="10dp"/> 在activity中使用: //声明popupwindow
本篇主要富含了对PopupWindow的封装,实现动画弹窗的例子。可用于相册选择、点赞等等。同时封装使用了建造者模式,对于补间动画的运用同样有较高的学习价值。...public void showAll(View view) { if (popupWindow !..., null); popupWindow = new CommonPopupWindow.Builder(this) .setView(R.layout.popup_up...public void showLeftPop(View view) { if (popupWindow !...= null && popupWindow.isShowing()) return; popupWindow = new CommonPopupWindow.Builder(this)
主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一大串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...1.1 实例化PopupWindow对象 既然实例化PopupWindow对象,所以我们看下它的构造函数: public PopupWindow() { this(null, 0, 0); }...PopupWindow要显示的宽和高, PopupWindow是否有获取焦点的能力(默认false)。...(height); popupWindow.setWidth(width); popupWindow.setFocusable(true); 点击窗体外消失: // 需要设置一下PopupWindow背景...PopupWindow源码简单分析 很惭愧,很早以前就会用PopupWindow,但是源码一直没有去看过。 在讲解PopupWindow源码前我们先来看下其他的知识。
主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一大串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...1.1 实例化PopupWindow对象 既然实例化PopupWindow对象,所以我们看下它的构造函数: public PopupWindow() { this(null, 0, 0); }...PopupWindow要显示的宽和高, PopupWindow是否有获取焦点的能力(默认false)。...(height); popupWindow.setWidth(width); popupWindow.setFocusable(true); 复制代码 点击窗体外消失: // 需要设置一下PopupWindow...PopupWindow源码简单分析 很惭愧,很早以前就会用PopupWindow,但是源码一直没有去看过。 在讲解PopupWindow源码前我们先来看下其他的知识。
对比 Popupwindow在显示之前一定要设置宽高,Dialog无此限制。...Popupwindow不会给页面其他的部分添加蒙层,而Dialog会。...其中最本质的差别就是: AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情; PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,...在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。...弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。
Theme.Dialog"> @null 练习使用PopupWindow...dialog.setContentView(R.layout.activity_two); // dialog.show(); //使用PopupWindow...popupWindow=new PopupWindow(anchor, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,true);...//点击空白隐藏 popupWindow.setTouchable(true); popupWindow.setTouchInterceptor...(getResources().getDrawable(R.drawable.ic_launcher)); popupWindow.showAsDropDown(arg0
而PopupWindow似乎就提供了showAsDropDown方法(请忽略showAtLocation,这边说的是相对于View显示),这~~就有点尴尬了。...PopupWindow 平时我们可能是这样用PopupWindow的: 创建一个布局,再创建一个类继承PopupWindow public class TestPopupWindow extends...如果你的PopupWindow宽高不确定,这两个参数你也不知道该写多少。 什么!你的PopupWindow宽高都写死了?骚年,你还是太年轻了。...准备工作 弹框前,需要得到PopupWindow的大小(也就是PopupWindow中contentView的大小)。 由于contentView还未绘制,这时候的width、height都是0。...大小后,就在任意位置弹窗了 弹框的位置无非就是根据PopupWindow以及指定View的大小,计算水平、竖直方向偏移。
PopupWindow有一个显示在在某个上方的方法,但是没有定义一个在控件下方的方法,不知为何.这里提供一个小思路: public class PopupOrderPriceDetail extends...PopupWindow { private int popupWidth; private int popupHeight; public PopupOrderPriceDetail
领取专属 10元无门槛券
手把手带您无忧上云