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;
    }
}

你可能感兴趣的:(popupwindow工具类)