最近有做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;
}
}
}

转载于:https://www.cnblogs.com/achen0502/p/5520829.html

自定义PopupWindow弹出后背景灰色状态相关推荐

  1. android popupwindowd弹出时后面变灰色,自定义PopupWindow弹出后背景灰色状态

    最近有做fragment里弹出自定义popupWindow, fragment里面调用: // 点击加号按钮 @Click protected void ll_add_pharmacy() { mPo ...

  2. 移动端h5页面软键盘弹出后 背景图片被顶上去

    移动端h5页面在软键盘弹出后,body的高度被压缩了,就导致原本高度100%的背景图被顶上去一截,需要把div的高度强行设回100%才能解决这个问题 <div class="app&q ...

  3. android 自定义 popupwindow,Android自定义弹出窗口PopupWindow使用技巧

    PopupWindow是Android上自定义弹出窗口,使用起来很方便. PopupWindow的构造函数为 public PopupWindow(View contentView, int widt ...

  4. 一个常用的自定义弹框封装(适配 AndroidX),加载 ProgressDialog,状态显示的 StatusDialog 和自定义 Toast,全部支持背景颜色,圆角,边框和文字的自定义,构建者模

    MNProgressHUD 项目地址:maning0303/MNProgressHUD  简介: 一个常用的自定义弹框封装(适配 AndroidX),加载 ProgressDialog,状态显示的 S ...

  5. 自定义ListPreference弹出Dialog背景

    公司最近项目需求是用实体键来在应用内操作,这就需要对那些可点击的widget的背景进行自定义,使其响应focus状态随即变化.大部分的layout改动都是挺简单的. 但是遇到一个主要的问题就是自带的P ...

  6. 移动端页面键盘弹出后导致body高度变低背景图片被挤上去解决方法

    移动端页面键盘弹出后导致body高度变低背景图片被挤上去解决方法 本身在设置背景图片的时候是将html,body的高度设为100%,然后 .main{height: 100%;background: ...

  7. R语言使用ggplot2包和maps包可视化世界地图(world map)、自定义填充色为浅灰色lightgray、背景为白色

    R语言使用ggplot2包和maps包可视化世界地图(world map).自定义填充色为浅灰色lightgray.背景为白色 目录

  8. 干货一:通过自定义PopupWindow实现QQ菜单选项功能

    概述 我们在使用手机QQ时,点击菜单键,会弹出如本案例说演示的效果图似的菜单选项. 实现方式有很多种,在这里我们来演示下如何通过自定义PopupWindow的方式一步一步的实现如上效果. 关于Popu ...

  9. Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框

    Acitivity(页面)之间的跳转 Acitivity(页面)之间的跳转需要使用到 Intent(意图) Intent intent = new Intent(MainActivity.this(从 ...

最新文章

  1. java 头尾 队列_超详细的java集合讲解
  2. 以演进式的架构来让系统为变化做好准备
  3. 架构师之路 — 部署架构 — 超大规模负载均衡架构演进
  4. C++ 命名空间 实战(一)嵌套的命名空间
  5. PHP发送数据到指定方法,php通过header发送自定义数据方法_php技巧
  6. 解构变换矩阵:如何使变换矩阵分解为位移(T),旋转(R),缩放(S)矩阵
  7. PHP指定字段的多维数组排序方法
  8. 什么是RUTP协议?RUDP协议在视频会议系统中的应用
  9. Hadoop安装杂记(2)
  10. 【长文预警】美团联合创始人王慧文清华产品课
  11. python自动化交易通达信_通达信实现自动交易系统
  12. 用matlab对图像进行二维傅里叶变换
  13. uniapp 表格组件,冻结首行首列
  14. java判断输入大写字母,java用ascii码判断输入的是大写字母,小写字母还是数字...
  15. 从中国的山水画谈谈游戏场景设计该有的状态
  16. 如何让局域网中的其他主机访问虚拟机
  17. 【跟我做】简单两部使用laravel-easy-WeChat包快速实现微信企业付款到用户零钱包功能...
  18. 计算机中存储的数据类型
  19. R语言:scatterplot3d(绘制三维散…
  20. python 微博图片爬虫 不用cookie

热门文章

  1. usg6620 查看端口流量_WhatRoute for Mac(互联网流量诊断查询工具)
  2. java代码的运行顺序_java中的代码块执行顺序
  3. macos big sur升级失败_【王牌出击】升级欲望更为强烈 斯旺西有望反客为主
  4. yum error: rpmdb: BDB0113 Thread/process
  5. 【MySQL】错误#1217:外键约束引起的错误
  6. Java常用日志框架介绍
  7. linux云管理,教程|云帮手部署Linux公有云管理系统
  8. java原子引用怎么理解_Java 原子性引用 AtomicReference
  9. properties 配置 java_Java 操作Properties配置文件详解
  10. 红帽启动apache服务器_redhat 启动ssh服务器