Android笔记系列--PopupWindow

(1)构造函数:

1. 方法一: 
public PopupWindow (Context context) 
2. 方法二: 
public PopupWindow(View contentView) 
3. 方法三: 
public PopupWindow(View contentView, int width, int height) 
4. 方法四: 
public PopupWindow(View contentView, int width, int height, boolean focusable)

contentView,width,height不可缺少

View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.popuplayout, null); 
PopupWindwo popWnd = PopupWindow (context); 
popWnd.setContentView(contentView); 
popWnd.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); 
popWnd.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

(2)显示函数

1. 相对某个控件的位置(正左下方),无偏移 
showAsDropDown(View anchor): 

2. 相对某个控件的位置,有偏移;xoff表示x轴的偏移,正值表示向左,负值表示向右;yoff表示相对y轴的偏移,正值是向下,负值是向上; 
showAsDropDown(View anchor, int xoff, int yoff): 

3. 相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移
showAtLocation(View parent, int gravity, int x, int y): 

(3)其它函数

public void dismiss() 
//另外几个函数,这里不讲其意义,下篇细讲 
public void setFocusable(boolean focusable) 
public void setTouchable(boolean touchable) 
public void setOutsideTouchable(boolean touchable) 
public void setBackgroundDrawable(Drawable background)

//设置动画所对应的style 
mPopWindow.setAnimationStyle(R.style.contextMenuAnim); 

<style name="contextMenuAnim" parent="@android:style/Animation.Activity"> 
    <item name="android:windowEnterAnimation">@anim/context_menu_enter</item> 
    <item name="android:windowExitAnimation">@anim/context_menu_exit</item> 
</style>

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 
    <translate 
        android:duration="@android:integer/config_shortAnimTime" 
        android:fromXDelta="0" 
        android:fromYDelta="0" 
        android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
        android:toXDelta="0" 
        android:toYDelta="100%p" /> 
</set>

例子

private void showPopupWindow() { 
    //设置contentView 
    View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.popuplayout, null); 
    mPopWindow = new PopupWindow(contentView, 
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
    //注意:必须要设置背景
    mPopWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    //显示PopupWindow 
    View rootview = LayoutInflater.from(MainActivity.this).inflate(R.layout.main, null); 

    //设置动画
    mPopWindow.setAnimationStyle(R.style.contextMenuAnim);

    mPopWindow.showAtLocation(rootview, Gravity.BOTTOM, 0, 0); 
}

点击空白消失需要设置两个函数:
1. setFocusable(true),或在构造函数的参数设置为true 等效
2. setBackgroundDrawable() ;必须设置背景

这两个函数要在showAtLocation()函数之前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星点点-

请我喝杯咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值