zoukankan      html  css  js  c++  java
  • 自定义PopupWindow弹出后背景灰色状态

    最近有做fragment里弹出自定义popupWindow,

    fragment里面调用:

    // 点击加号按钮
    @Click
    protected void ll_add_pharmacy() {

    mPopTempList.showAsDropDown(ll_add_pharmacy, 0, getActivity());  // 传给popupWindow getActivity();

    mPopTempList.setOnClickListener(new OnOKClickListener() {

    @Override
    public void onOKClick(int which) {
    switch (which) {
    case 1: // 添加药品
    Intent intent = new Intent();
    // ONEALLBACTH 代表单品或批量添加 标识1代表单品
    intent.putExtra("ONEALLBACTH", "1");
    intent.setClass(getActivity(), AnnotationClassUtil.get(AddNewPharmacyActivity1.class));
    getActivity().startActivityForResult(intent, MainActivity.CONNECT_GUN);
    break;

    }
    }
    });
    }

    自定义popupWindow:

    package com.hospital.widget;

    import android.app.Activity;
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup.LayoutParams;
    import android.view.WindowManager;
    import android.widget.ImageView;
    import android.widget.PopupWindow;
    import android.widget.PopupWindow.OnDismissListener;
    import android.widget.TextView;

    import com.hospital.R;

    /**
    *
    * @ClassName: PopSelectPharmacy
    * @Description: TODO
    * @author wuc
    *
    */
    public class PopSelectPharmacy implements View.OnClickListener{

    /**
    * int which
    * 1.添加药品 2.库存提醒 3.搜索药品
    * @author Achen
    *
    */
    public static interface OnOKClickListener {
    public void onOKClick(int which);
    }

    //生命接口对象
    private OnOKClickListener mClickListener;

    //设置监听器 也就是实例化接口
    public void setOnClickListener(final OnOKClickListener clickListener) {
    this.mClickListener = clickListener;
    }

    private Context context;
    private PopupWindow popupWindow;
    private TextView tv_addDrug, tv_storageRemind, tv_searchDrug;
    private LayoutInflater inflater;
    private ImageView iv_yfgl_addXiaoHongDianKuCun ;

    public ImageView getIv_yfgl_addXiaoHongDianKuCun() {
    return iv_yfgl_addXiaoHongDianKuCun;
    }

    public void setIv_yfgl_addXiaoHongDianKuCun(
    ImageView iv_yfgl_addXiaoHongDianKuCun) {
    this.iv_yfgl_addXiaoHongDianKuCun = iv_yfgl_addXiaoHongDianKuCun;
    }

    public PopSelectPharmacy(final Context context) {
    this.context = context;

    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.pop_selectpharmacy, null);

    tv_addDrug = (TextView) view.findViewById(R.id.tv_addDrug);
    tv_storageRemind = (TextView) view.findViewById(R.id.tv_storageRemind);
    tv_searchDrug = (TextView) view.findViewById(R.id.tv_searchDrug);
    iv_yfgl_addXiaoHongDianKuCun = (ImageView) view.findViewById(R.id.iv_yfgl_addXiaoHongDianKuCun);

    tv_addDrug.setOnClickListener(this);
    tv_storageRemind.setOnClickListener(this);
    tv_searchDrug.setOnClickListener(this);

    popupWindow = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景(很神奇的)
    popupWindow.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.add_drugbackground));

    }

    // 下拉式 弹出 pop菜单 parent 右下角
    public void showAsDropDown(View parent, String key, Activity activity) {
    showAsDropDown(parent, 0, activity);
    }

    private View parent;
    /**
    * 为了解决 设置背景后padding无效的bug
    * @param parent
    * @param key
    * @param padding
    */
    public void showAsDropDown(View parent, int[] padding) {

    this.parent = parent;
    popupWindow.showAsDropDown(parent, 0, context.getResources().getDimensionPixelSize(R.dimen.popmenu_yoff));
    popupWindow.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.add_drugbackground));
    parent.setPadding(padding[0], padding[1], padding[2], padding[3]);
    popupWindow.setOnDismissListener(new OnDismissListener() {

    @Override
    public void onDismiss() {

    }
    });
    // 使其聚集
    popupWindow.setFocusable(true);
    // 设置允许在外点击消失
    popupWindow.setOutsideTouchable(true);
    // 刷新状态
    popupWindow.update();
    }

    public void showAsDropDown(View parent, int padding, final Activity activity) {
    this.parent=parent;
    int[] paddings = { padding, padding, padding, padding };
    showAsDropDown(parent, paddings);

    // 设置背景颜色变暗
    WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
    lp.alpha = 0.7f;
    activity.getWindow().setAttributes(lp);
    popupWindow.setOnDismissListener(new OnDismissListener() {

    @Override
    public void onDismiss() {
    WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
    lp.alpha = 1f;
    activity.getWindow().setAttributes(lp);
    }
    });
    }

    public void dismissPop() {
    if(parent!=null)
    popupWindow.dismiss();
    }

    public PopupWindow getPopupWindow() {
    return popupWindow;
    }

    @Override
    public void onClick(final View v) {
    // TODO Auto-generated method stub
    final int id = v.getId();
    switch (id) {
    case R.id.tv_addDrug:
    if (this.mClickListener != null) {
    this.mClickListener.onOKClick(1);
    popupWindow.dismiss();
    }
    break;
    case R.id.tv_storageRemind:
    if (this.mClickListener != null) {
    this.mClickListener.onOKClick(2);
    popupWindow.dismiss();
    }
    break;
    case R.id.tv_searchDrug:
    if (this.mClickListener != null) {
    this.mClickListener.onOKClick(3);
    popupWindow.dismiss();
    }
    break;
    }
    }
    }

  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/achen0502/p/5520829.html
Copyright © 2011-2022 走看看