标签:android 自定义 view 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;
}
}
}
在 Activity 的 点击事件中 ,弹出 popwindow
具体代码如下
<pre name="code" class="html">//初始化 MenuPopwindow popwindow = new MenuPopwindow(this); //在需要弹出 popwindow 的 地方调用 // 第一个参数,弹出的相对 parent view ,btnView // 第二个, 位置 // 第三、第四 相对 parent 的 偏移 popwindow.showAtLocation(btnView,Gravity.BOTTOM,0,0);
标签:android 自定义 view popwindow 控件
原文地址:http://blog.csdn.net/imesong/article/details/39188541