Popupwindow 完美demo实现 图示: 关键代码说明: 1.弹出popupwindow,背景变暗 ColorDrawable cd = new ColorDrawable(0x000000); popuWindow1...popupwindow也会dismiss popuWindow1.setOutsideTouchable(true); popuWindow1.setFocusable(true); 完整代码: 1.MainActivity.java..., null); popuWindow1 = new PopupWindow(contentView1,ViewGroup.LayoutParams.WRAP_CONTENT,....setOutsideTouchable(true); popuWindow1.setFocusable(true); popuWindow1.showAtLocation((View...popuWindow1.setOnDismissListener(new OnDismissListener(){ //在dismiss中恢复透明度 public void
int width, int height) { super(contentView,width,height); } /** * 在android7.0上,如果不主动约束PopuWindow...的大小,比如,设置布局大小为 MATCH_PARENT,那么PopuWindow会变得尽可能大,以至于 view下方无空间完全显示PopuWindow,而且view又无法向上滚动,此时PopuWindow...* 解决办法:主动约束PopuWindow的内容大小,重写showAsDropDown方法: * @param anchor */ @Override public void showAsDropDown
} } 然后我发现还是太年轻了,虽然不阻挡当前界面的操作,但是我发现这玩意儿点击 popuwindow外面,这个popuwindow就自动关掉了,这我不可以忍,WTF??...原来需要在popuwindow里加上这么一句代码: // 设置点击popuwindow外边不关闭popuwindow this.setTouchInterceptor { _, _...// 设置点击popuwindow外边不关闭popuwindow this.setTouchInterceptor { _, _ -> true...原来在popuwindow里需要进行一次测量,才可以正确获取popuwindow的宽高, this.contentView.measure(View.MeasureSpec.UNSPECIFIED,...// 设置点击popuwindow外边不关闭popuwindow this.setTouchInterceptor { _, _ -> true
} } 然后我发现还是太年轻了,虽然不阻挡当前界面的操作,但是我发现这玩意儿点击 popuwindow外面,这个popuwindow就自动关掉了,这我不可以忍,WTF??...原来需要在popuwindow里加上这么一句代码: // 设置点击popuwindow外边不关闭popuwindow this.setTouchInterceptor { _, _...// 设置点击popuwindow外边不关闭popuwindow this.setTouchInterceptor { _, _ -> true...原来在popuwindow里需要进行一次测量,才可以正确获取popuwindow的宽高, this.contentView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED...// 设置点击popuwindow外边不关闭popuwindow this.setTouchInterceptor { _, _ -> true
基于如上的方式,我们可以使用另外一种方式来做引导,这样方式就是使用覆盖式的方式,主要的实现方式是 使用一个透明并且全屏的PopuWindow,这样我们就有一个可以显示向导 获取需要引导的View元素在屏幕上的位置...,这样我们就可以准确的给这个View绘制引导信息 然后让PopuWindow显示出来,这样就可以看到我们的引导正好指向需要引导的位置 可以看下如下图的效果,这是实现的示例图. ?...从上面的描述和效果图中我们也看到了一些关键点,比如全屏背景透明的PopuWindow,这个相信比较简单,宽高FILL_PARENT,背景设置为透明背景就好了.第二个就是目标View的位置,这个是比较难的...获取到这些VIew的位置后,就需要显示我们的引导了,PopuWindow可以设置一个ContentView,我们可以AbsoluteLayout作为ContentView,在这里绝对布局是最好的选择,因为我们获取的目标...接下来的事情就简单了,我们只需要显示PopuWindow就可以啦,然后控制好事件,比如用户点击的时候收起该引导,让用户继续正常使用产品.引导不能无休止的显示,我们可以通过配置来控制引导是否显示以及显示的次数等等
前言 Android中的对话框有多种: Toast OptionsMenu PopupWindow Dialog 它们都可以实现弹窗功能,但是他们之间有一些差别,下面我们先对比Dialog和PopuWindow
getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenuView = inflater.inflate(R.layout.feed_popuwindow
领取专属 10元无门槛券
手把手带您无忧上云