android PopupWindow使用实例

注:点空白或菜单外隐藏popupwindow菜单;

但是,若点击有点击事件的组件则要再写代码手动隐藏;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        if (mMenuPPW!=null){
            if (mMenuPPW.isShowing())
                mMenuPPW.dismiss();
        }        
        return super.onTouchEvent(event);

    }

 

.java

 1 private PopupWindow mMenu;
 2 
 3 
 4     public void CreatMenu(View view) {
 5         if (mMenu == null) {
 6             LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 7             View v = inflater.inflate(R.layout.popuppindow_group,
 8                     null, false);
 9             LinearLayout lytRequest = (LinearLayout) v.findViewById(R.id.lyt_pw_groupmember_request);
10             lytRequest.setOnClickListener(this);
11             LinearLayout lytExit = (LinearLayout) v.findViewById(R.id.lyt_pw_groupmember_exit);
12             lytExit.setOnClickListener(this);
13             mMenu = new PopupWindow(v);
14 //            moreMenu.setWidth(300);
15             mMenu.setWidth(LayoutParams.WRAP_CONTENT);
16             mMenu.setHeight(LayoutParams.WRAP_CONTENT);
17             mMenu.showAsDropDown(view);
18         } else {
19             if (mMenu.isShowing()) {
20                 mMenu.dismiss();
21             } else {
22                 mMenu.showAsDropDown(view);
23             }
24         }
25     }    
26 
27 @Override
28     public void onClick(View v) {
29         // TODO Auto-generated method stub
30         switch (v.getId()) {
31          case R.id.lyt_activitygroupmembers_menu:
32              CreatMenu(v);
33          break;
34          case R.id.lyt_pw_groupmember_request:
35              Toast.makeText(this, "request", Toast.LENGTH_SHORT).show();
36              mMenu.dismiss();
37          break;
38          case R.id.lyt_pw_groupmember_exit:
39              Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show();
40              mMenu.dismiss();
41          break;         
42          
43         }
44 
45     }

 

.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/darker_gray" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/lyt_pw_groupmember_request"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/TextView03"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_marginLeft="12dp"
                android:layout_marginRight="12dp"
                android:gravity="left|center"
                android:text="request"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/TextView04"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginLeft="4dp"
                android:layout_marginRight="4dp"
                android:background="@android:color/darker_gray"
                android:text="TextView" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/lyt_pw_groupmember_exit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/TextView02"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_marginLeft="12dp"
                android:layout_marginRight="12dp"
                android:gravity="left|center"
                android:text="exit"
                android:textSize="18sp" />

        </LinearLayout>

    </LinearLayout>
    

</RelativeLayout>

 注:mMenu.showAsDropDown(view, 0, 16);即偏移view,x,y轴的间距

posted @ 2015-03-13 19:20  jenson138  阅读(1060)  评论(0编辑  收藏  举报