popupwindow工具类

package oschina.itheima.com.materialdemo;

import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;

/**
 * Created by Wang on 2017/5/22.
 */

public class SuperPopupWindow {

    private SuperPopupWindow() {
    }

    /**
     *
     * @param context 上下文
     * @param layout 布局文件
     * @param width pop的宽
     * @param hight pop的高
     * @param setOutsideTouchable 点击外部是否隐藏pop
     * @param setTouchable  设置PopupWindow是否响应touch事件
     * @param setFocusable pop是否可以获取焦点(如果该PopupWindow是有焦点的,那么在它弹出来之后,
     *                     所有的按键和触摸事件都会被它截获,包括返回键。这时候点击返回建会关闭pop。
     *                     而当它没有焦点时,点击返回键就会关闭它所在的activity或fragment。所以
     *                     当他没有焦点时,要想做掉点击返回键关闭它,你就要在activity或fragment中
     *                     重写onBackPressed()方法,手动设置关闭pop)
     * @return
     */


    public static PopupWindow createPopupWindow(Context context,int layout,int width,int hight,boolean setOutsideTouchable,boolean setTouchable,boolean setFocusable){
        View convertView = LayoutInflater.from(context).inflate(layout,null);
        final PopupWindow popupWindow = new PopupWindow(convertView, width, hight,true);
        popupWindow.setContentView(convertView);
        //这个函数可是吊了,这个函数不只能设置背景……,因为你加上它之后,setOutsideTouchable()才会生效;
        //而且,只有加上它之后,PopupWindow才会对手机的返回按钮有响应:即,点击手机返回按钮,可以关闭PopupWindow;
        // 如果不加setBackgroundDrawable()将关闭的PopupWindow所在的Activity.
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        //设置点击外部可否关闭pop
        popupWindow.setOutsideTouchable(setOutsideTouchable);
        //设置PopupWindow是否响应touch事件,默认是true,如果设置为false,那么pop中的空间将不再永远点击事件,说白了,就是没法点了。
        popupWindow.setTouchable(setTouchable);
        //该函数的意义表示,PopupWindow是否具有获取焦点的能力,默认为False。一般来讲是没有用的,因为普通的控件是不需要获取焦点的,
        // 而对于EditText则不同,如果不能获取焦点,那么EditText将是无法编辑的。
        popupWindow.setFocusable(setFocusable);
        return popupWindow;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值