android PopupWindow的使用和分析

  • PopupWindow使用

PopupWindow這個類來實現彈出框,可以使用任意佈局,這個彈出框是懸浮在activity上的。

使用如下:

//region popupwindow process
    private PopupWindow pw;
    private void showPopupWindow(){
        View view = LayoutInflater.from(act).inflate(R.layout.layout_rental_information,null);
        TextView tv_cancel = (TextView) view.findViewById(R.id.tv_cancel);
        pw = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
        pw.setFocusable(true);
        //不設置背景,無論點擊外部區域還是back鍵都無法dismiss
        pw.setBackgroundDrawable(new ColorDrawable());
        pw.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
        pw.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
//顯示popupWindow        pw.showAtLocation(act.getWindow().getDecorView(), 0, 0, 0);
        pw.showAsDropDown(waveView,0,0, Gravity.CENTER);
        tv_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismissPw();
            }
        });
    }

    private void dismissPw(){
        if (null != pw && pw.isShowing()){
            pw.dismiss();
        }
    }
    //endregion
  • PopupWindow源碼分析

PopupWindow顯示方法分爲2種:

//指定位置
public void showAtLocation(View parent, int gravity, int x, int y);

//選擇一個參照物View
public void showAsDropDown(View anchor);

public void showAsDropDown(View anchor, int xoff, int yoff);

public void showAsDropDown(View anchor, int xoff, int yoff, int gravity);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章