PopupWindow的使用

PopupWindow popupWindow = new PopupWindow(this);
        popupWindow.setContentView(LayoutInflater.from(this).inflate(R.layout.activity_main, null));
        popupWindow.setWidth(110);
        popupWindow.setHeight(500);
        popupWindow.showAtLocation(viewPager, Gravity.BOTTOM, 0, 0);

即可

使用PopupWindow可实现弹出窗口效果,,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。下面就看看使用方法。

首先初始化一个PopupWindow,指定窗口大小参数。

PopupWindow mPop =
new PopupWindow(getLayoutInflater().inflate(R.layout.window,
null),
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
也可以分开写:
LayoutInflater mLayoutInflater = (LayoutInflater)
getSystemService(LAYOUT_INFLATER_SERVICE);
//自定义布局
ViewGroup menuView = (ViewGroup) mLayoutInflater.inflate(
   
   
   
   
   
R.layout.window, null, true);
PopupWindow mPop
= new PopupWindow(menuView,
LayoutParams.WRAP_CONTENT,
   
   
   
   
   
LayoutParams.WRAP_CONTENT, true);
当然也可以手动设置PopupWindow大小。
mPop.setContentView(menuView );//设置包含视图
mPop.setWidth(int
)
mPop.setHeight(int
)//设置弹出框大小

设置进场动画:
mPop.setAnimationStyle(R.style.AnimationPreview);//设置动画样式

mPop.setOutsideTouchable(true);//这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。当然这里很明显只能在Touchable下才能使用。

当有mPop.setFocusable(false);的时候,说明PopuWindow不能获得焦点,即使设置设置了背景不为空也不能点击外面消失,只能由dismiss()消失,但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉。当设置为popuWindow.setFocusable(true);的时候,加上下面两行设置背景代码,点击外面和Back键才会消失。

mPop.setFocusable(true);
需要顺利让PopUpWindow dimiss(即点击PopuWindow之外的地方此或者back键PopuWindow会消失);PopUpWindow的背景不能为空。必须在popuWindow.showAsDropDown(v);或者其它的显示PopuWindow方法之前设置它的背景不为空:

mPop.setBackgroundDrawable(new
ColorDrawable(0));

mPop.showAsDropDown(anchor, 0,
0);//设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量

mPop.showAtLocation(findViewById(R.id.parent), Gravity.LEFT, 0, -90);(以某个View为参考),表示弹出窗口以parent组件为参考,位于左侧,偏移-90。

mPop.setOnDismissListenerd(new
PopupWindow.OnDismissListener(){})//设置窗口消失事件

注:window.xml为布局文件

总结:

1、为PopupWindow的view布局,通过LayoutInflator获取布局的view.如:

LayoutInflater inflater =(LayoutInflater)

this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View textEntryView =  inflater.inflate(R.layout.paopao_alert_dialog, null);

2、显示位置,可以有很多方式设置显示方式

pop.showAtLocation(findViewById(R.id.ll2), Gravity.LEFT, 0, -90);

或者

pop.showAsDropDown(View anchor, int xoff, int
yoff)

3、进出场动画

pop.setAnimationStyle(R.style.PopupAnimation);

4、点击PopupWindow区域外部,PopupWindow消失

this.window = new PopupWindow(anchor.getContext());

this.window.setTouchInterceptor(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if(event.getAction() ==MotionEvent.ACTION_OUTSIDE) {

BetterPopupWindow.this.window.dismiss();

return true;

}

return false;

}

});

时间: 2024-10-15 13:06:02

PopupWindow的使用的相关文章

Android新手入门2016(13)--阻塞对话框PopupWindow

上两章都说了非阻塞的对话框,今天说一下阻塞的对话框--PopupWindow 那么什么是阻塞什么是非阻塞呢?PopupWindow和AlertDialog有什么不同呢? 先说AlertDialog,弹出来之后,背面会变灰,并没有阻塞后台的进程,如果没特殊控制,点击后面灰暗处,弹框会消失掉的. 至于PopupWindow,则是弹出来,后面没有任何变化,并且阻塞该应用的进程,如果一直没退出,应用汇一直等待,点击后面也是没有反应的. 不知道为什么现在上传不了图,就不上传了,其实跟AlertDialog

Android封装类似微信的顶部TitleBar弹出的PopupWindow代码

Android仿微信顶部titlebar,点击加号弹出的PopupWindow,是封装好的PopupWindow,直接拿来用即可,先看效果图:  调用代码非常简单,这是MainActivity的代码: public class MainActivity extends AppCompatActivity { private TitlePopup titlePopup; @Override protected void onCreate(Bundle savedInstanceState) { s

android:PopupWindow的使用场景和注意事项

1.PopupWindow的特点 借用Google官方的说法: "A popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity." 也就是说.popupwindow是activity上方的一个悬浮容器.它能够显示随意的视图View,非常霸气的样子. 以下看一

PopupWindow

package com.panjn.userinterface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; public class MainActi

弹出窗口:PopupWindow 详解

效果如图所示,点击开始按钮,popWindow从下往上出来,再点击popWindow外面,popWindow又从上往下消失 可以看出来,上面的popupWindow是半透明的,后面我会细说. 最基本的是activity_main了,很简单,就只是一个button,这里我就不贴代码了. 接下来的是,popWindow的界面了 代码如下: 这里注意我里面的那个注释 <?xml version="1.0" encoding="utf-8"?> <Line

安卓开发入门教程全-PopupWindow用法大全

都是一群技术宅,先给大家说一个严酷的现实吧,现在是6月份,多少人顶着大太阳在找工作,现在我们既然有不错的工作或者想通过安卓学好的,我都希望每一个人去实践,就像Android开发入门QQ群:175229978很多人一样,肯去敲代码,不嫌弃麻烦. 首先给大家介绍安卓PopupWindow,不要嫌弃我讲解的有些详细. Android的对话框有两种:PopupWindow和AlertDialog.它们的不同点在于:AlertDialog的位置固定,而PopupWindow的位置可以随意AlertDial

Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)

我们知道,在很多时候,我们都不用Android内置的一些控件,而是自己自定义一些自己想要的控件,这样显得界面更美观. 今天主要是讲自定义AlertDialog和popupWindow的使用,在很多需求中,我们往往需要这样一个功能,就是点击一个按钮或者其它控件,弹出一个对话框,让用户可以在这个对话框中做一些事,比如输入.选择.提示.....等等,那么,这个弹出对话框的功能我们都知道可以用popupWindow和AlertDialog实现,的却,popupWindow被称为万能的,因为它的布局都是我

【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻菜单

前一篇文章中有用到 PopupWindow 来实现弹窗的功能.简单介绍以下吧. 官方文档是这样解释的:这就是一个弹出窗口,可以用来显示一个任意视图.出现的弹出窗口是一个浮动容器的当前活动. 1.首先来个简单的栗子,效果如下: 只有两个布局文件,一个是弹窗布局(只有一张图片),一个是主界面布局(只有一个按钮). 然后在主界面代码中实例 PopupWindow ,指定弹出的界面,在按钮点击事件中显示或隐藏弹窗就可以了,代码如下: package com.yanis.demo; import andr

Android对话框(四)PopupWindow

主布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddi

android PopupWindow与键盘

一些表示方式 键盘高度:keyboardHeight;   屏幕高度:screenHeight; popupwindow高度:popHeight;  popupwindow距离屏顶:popTop; 第一部分:系统键盘相关 1.设置 mPopupWindow.setInputMethodMode(Popupwindows.iNPUT_METHOD_NEEDED); mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT