首页 > 代码库 > 自定义 Popwindow
自定义 Popwindow
popwindow 是比较常用的一种控件,为了灵活使用,会自定义 popwidow ,继承 popwindow。
这篇文章主要介绍如何自定义 popwindow ,同时响应 popwindow 中 view 的事件。
1. 定义 MenuPop 继承 popwindow
具体代码如下 :
public class MenuPopwindow extends PopupWindow implements OnClickListener { private Context context; private View mMenu; private TextView tv1, tv2, tv3, tv4; public MenuPopwindow(Context context) { // 这一行代码一定不能忘了 // 不然,初始化的时候会有 NullPointException super(context); this.context = context; //view 控件 initView(); initData(); } private void initView() { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenu = inflater.inflate(R.layout.menu_main, null); tv1 = (TextView) mMenu.findViewById(R.id.menu_1); tv2 = (TextView) mMenu.findViewById(R.id.menu_2); tv3 = (TextView) mMenu.findViewById(R.id.menu_3); tv4 = (TextView) mMenu.findViewById(R.id.menu_4); tv1.setOnClickListener(this); tv2.setOnClickListener(this); tv3.setOnClickListener(this); tv4.setOnClickListener(this); } private void initData() { // 设置 popwindow 的背景 this.setContentView(mMenu); // 设置 width ,height this.setWidth(LayoutParams.MATCH_PARENT); this.setHeight(LayoutParams.WRAP_CONTENT); // 这句话很关键,popwindow 显示的时候 会获取焦点,点击其他区域可以消失 // 如果设置为 false ,点击其他区域不会消失 this.setFocusable(true); // 设置popup的 背景 ColorDrawable colorDrawable = new ColorDrawable(0Xb0000000); this.setBackgroundDrawable(colorDrawable); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.menu_1: SetToast.setToastShort(context, "我是大哥"); break; case R.id.menu_2: SetToast.setToastShort(context, "我是二哥"); break; case R.id.menu_3: SetToast.setToastShort(context, "我是三哥"); break; case R.id.menu_4: SetToast.setToastShort(context, "我是小弟"); break; default: break; } } }
下面是 popwindow 的 使用
在 Activity 的 点击事件中 ,弹出 popwindow
具体代码如下
<pre name="code" class="html">//初始化 MenuPopwindow popwindow = new MenuPopwindow(this); //在需要弹出 popwindow 的 地方调用 // 第一个参数,弹出的相对 parent view ,btnView // 第二个, 位置 // 第三、第四 相对 parent 的 偏移 popwindow.showAtLocation(btnView,Gravity.BOTTOM,0,0);
这样一个简单的 popwindow 就定义好了。显示效果 如下
自定义 Popwindow
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。