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出现的时候,按back键首先是让PopupWindow消失,第二次按才是退出 activity,准确的说是想退出activity你得首先让PopupWindow消失,因为不并是任何情况下按...view){ initPopWindow(view); } private void initPopWindow(View v) { // 将自定义布局转换为...区域,PopupWindow会消失的,如果没有下面的 //代码的话,你会发现,当你把PopupWindow显示出来了,无论你按多少次后退键 //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 <?
实现方式有很多种,在这里我们来演示下如何通过自定义PopupWindow的方式一步一步的实现如上效果。...点击外部,PopupWindow可消失 …… 实现 自定义PopupWindow UI编写 位于父布局的底部 距边框有一定的距离,根布局使用layout_margin即可 ListView(四个圆角+...PopupWindow编写 +接口回调+监听OnTouch事件实现点击外部消失 加载自定义的xml文件,然后获取ListView组件,设置adapter 即可显示UI布局。...PopupWindow */ private void initCustomPopupWindow() { // 加载自定义布局文件,转化为组件 parentView...需要依赖父组件来显示,所以实例话PopupWindow的时候,传入根布局View,实现接口回调Activity类实现自定义的两个接口,并传入到PopupWindow中。
实现这样的效果 圆角图片的自定义控件直接拷进来,和com一个等级 想要弹出内容可以使用悬浮窗 layout_pupup 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
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
-- 自定义对话框主题 --> @null 练习使用PopupWindow实现对话框 package...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有一个显示在在某个上方的方法,但是没有定义一个在控件下方的方法,不知为何.这里提供一个小思路: public class PopupOrderPriceDetail extends...PopupWindow { private int popupWidth; private int popupHeight; public PopupOrderPriceDetail
而PopupWindow似乎就提供了showAsDropDown方法(请忽略showAtLocation,这边说的是相对于View显示),这~~就有点尴尬了。...PopupWindow 平时我们可能是这样用PopupWindow的: 创建一个布局,再创建一个类继承PopupWindow public class TestPopupWindow extends...如果你的PopupWindow宽高不确定,这两个参数你也不知道该写多少。 什么!你的PopupWindow宽高都写死了?骚年,你还是太年轻了。...准备工作 弹框前,需要得到PopupWindow的大小(也就是PopupWindow中contentView的大小)。 由于contentView还未绘制,这时候的width、height都是0。...大小后,就在任意位置弹窗了 弹框的位置无非就是根据PopupWindow以及指定View的大小,计算水平、竖直方向偏移。
本篇主要富含了对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)。...LAYOUT_INFLATER_SERVICE); //自定义布局 ViewGroup view = (ViewGroup) mLayoutInflater.inflate(R.layout.window...-Android 自定义Dialog实现步骤及封装 我们这次来对PopupWindow来进行封装,我们还是像上面的文章那样,使用Builder模式。
主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一大串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...1.1 实例化PopupWindow对象 既然实例化PopupWindow对象,所以我们看下它的构造函数: public PopupWindow() { this(null, 0, 0); }...PopupWindow要显示的宽和高, PopupWindow是否有获取焦点的能力(默认false)。...(LAYOUT_INFLATER_SERVICE); //自定义布局 ViewGroup view = (ViewGroup) mLayoutInflater.inflate(R.layout.window...2.PopupWindow工具类封装 我在以前写过Dialog的封装文章: 项目需求讨论-Android 自定义Dialog实现步骤及封装 我们这次来对PopupWindow来进行封装,我们还是像上面的文章那样
领取专属 10元无门槛券
手把手带您无忧上云