Android PopupWindow 的使用

弹出窗口(PopupWindow)用来显示一个的任意的视图(view),通常浮动在当前Acitivty之上。

构造方法1:
   
    public PopupWindow(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.popupWindowStyle);
    }
   //defStyle 窗口样式
    public PopupWindow(Context context, AttributeSet attrs, int defStyle)

构造方法2:
   
 public PopupWindow(View contentView, int width, int height, boolean focusable)

常用的方法:

    public void setBackgroundDrawable(Drawable background) ——改变弹出窗口的背景,当然也可以设置为NULL。
   public Drawable getBackground() ——获得弹出窗口背景。
   public void setAnimationStyle(int animationStyle)——改变窗口显示与消失时的动态样式
注:如果窗口已经显示过,更改此值只能在下一次显示时起作用,或者调用update()方法。
   public int getAnimationStyle()——获得弹出窗口显示与消失时的动态样式the animation style
   public void setContentView(View contentView)——设置弹出窗口包含的视图
   public View getContentView() —— 获得弹出窗口包含的视图
   public boolean isFocusable() ——返回当前弹出窗口是否可获得焦点
   public void setFocusable(boolean focusable) ——设置弹出窗口是否可获得焦点,默认false
   public boolean isShowing()——判断当前窗口是否已显示
   public void showAtLocation(View parent, int gravity, int x, int y)——指定弹出窗口显示的位置。
   public void update()——更新弹出窗口的状态, 一些状态:
  setClippingEnabled(boolean)
  setFocusable(boolean)
  setIgnoreCheekPress()
  setTouchable(boolean)
  setAnimationStyle(int)
  setInputMethodMode(int)
  setAnimationStyle(int)


  重点看下:
 
 public void showAtLocation(View parent, int gravity, int x, int y)

实例:
效果如下,点击注册按钮弹出,图2的窗口。
Android <wbr>PopupWindow <wbr>的使用


Android <wbr>PopupWindow <wbr>的使用

关键代码:
LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View menuView = (View)mLayoutInflater.inflate(R.layout.alert_dialog_menu_layout_new, null, true);//弹出窗口包含的视图
popupWindow = new PopupWindow(menuView, LayoutParams.FILL_PARENT,238, true);//创建弹出窗口,指定大小  popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_style_alert_dialog_background));//设置弹出窗口的背景
popupWindow.setAnimationStyle(R.style.PopupAnimation);//设置窗口显示的动画效果
popupWindow.showAtLocation(findViewById(R.id.parent), Gravity.BOTTOM, 0, 0);//设置窗口显示的位置
popupWindow.update();

Style.xml文件:
    <style name="PopupAnimation" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/menu_up</item>
    </style>
Meun_up.xml文件:
<set  xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="500" android:fromXDelta="0.0" android:toXDelta="0.0" android:fromYDelta="100%" android:toYDelta="50%" />
</set>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PopupWindow是一种可以在当前界面上方显示的弹出窗口,通常用于显示一些额外的信息或者提供用户操作的选项。在Android中,可以使用PopupWindow类来创建弹出窗口。 以下是使用PopupWindow的一般步骤: 1. 创建PopupWindow对象:使用PopupWindow的构造函数创建一个PopupWindow对象。 2. 设置PopupWindow的属性:设置PopupWindow的大小、位置、背景等属性。 3. 设置PopupWindow的内容视图:使用setContentView方法设置PopupWindow的内容视图,这可以是一个布局文件或者一个View对象。 4. 显示PopupWindow使用showAsDropDown、showAtLocation等方法显示PopupWindow。 5. 处理PopupWindow的事件:设置PopupWindow的监听器,处理PopupWindow的各种事件。 以下是一个简单的例子,展示如何使用PopupWindow: ``` // 创建PopupWindow对象 PopupWindow popupWindow = new PopupWindow(context); // 设置PopupWindow的属性 popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); popupWindow.setFocusable(true); // 设置PopupWindow的内容视图 View contentView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null); popupWindow.setContentView(contentView); // 显示PopupWindow popupWindow.showAsDropDown(anchorView); // 处理PopupWindow的事件 contentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理点击事件 popupWindow.dismiss(); } }); ``` 在上面的代码中,我们创建了一个PopupWindow对象,并设置了宽高、背景等属性。然后,我们使用LayoutInflater加载了一个布局文件作为PopupWindow的内容视图,并使用setContentView方法设置了PopupWindow的内容视图。最后,我们使用showAsDropDown方法显示了PopupWindow,并设置了一个点击事件处理器来处理用户点击PopupWindow的事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值