MainActivity代码
package com.xinnonbao.popuwindow; import android.app.Activity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutCompat; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.widget.Button; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.TextView; public class MianAcitivity extends Activity { /** Called when the activity is first created. */ Button button; // MyOnClick click ; PopupWindow popupWindow; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button);//这个是下面的button button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(popupWindow!=null&&popupWindow.isShowing()){ // popupWindow.dismiss(); button.setEnabled(false); return; } else{ initPopWindow(); button.setVisibility(View.GONE); } } }); } // /** // * 点击popupwindow外部取消 // */ // @Override // public boolean dispatchTouchEvent(MotionEvent ev) { // if(popupWindow==null||!popupWindow.isShowing()) { // return super.dispatchTouchEvent(ev); // } // boolean isOut = isOutOfBounds(ev); // if(ev.getAction()==MotionEvent.ACTION_DOWN && isOut) { // popupWindow.dismiss(); // return true; // } // return false; // } /** * 是否在popuwindow外部 * @param event * @return */ private boolean isOutOfBounds(MotionEvent event) { final int x=(int) event.getX(); final int y=(int) event.getY(); int slop = ViewConfiguration.get(this).getScaledWindowTouchSlop(); View decorView = popupWindow.getContentView(); return (x<-slop)||(y<-slop) ||(x>(decorView.getWidth()+slop)) ||(y>(decorView.getHeight()+slop)); } protected void initPopWindow() { LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); View view = inflater.inflate(R.layout.pup_item, null); popupWindow = new PopupWindow(findViewById(R.id.mainLayout), LinearLayoutCompat.LayoutParams.MATCH_PARENT, 600); popupWindow.setContentView(view); ImageView img1 = (ImageView) view.findViewById(R.id.ImageView1); // ImageView img2 = (ImageView) view.findViewById(R.id.imageView2); // ImageView img3 = (ImageView) view.findViewById(R.id.imageView3); TextView tvdown = (TextView) view.findViewById(R.id.Rl_top); // click = new MyOnClick(); // img1.setOnClickListener(click); // img2.setOnClickListener(click); // img3.setOnClickListener(click); //在这里面获取数据行吗 popupWindow.setOutsideTouchable(true); popupWindow.setFocusable(false); popupWindow.showAsDropDown(button); tvdown.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { popupWindow.dismiss(); button.setVisibility(View.VISIBLE); } }); } // class MyOnClick implements View.OnClickListener { // @Override // public void onClick(View v) { // switch (v.getId()) { // case R.id.ImageView1: // popupWindow.dismiss(); // break; // case R.id.imageView2: // popupWindow.dismiss(); // break; // case R.id.imageView3: // popupWindow.dismiss(); // break; // } // } // // } }
mainXml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/mainLayout"> <TextView android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" android:text="button"/> </LinearLayout>
pup_item布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:background="#fff" android:id="@+id/Rl_top" android:layout_width="60dp" android:layout_height="wrap_content" android:text="这个是上面部分的图标啊"/> <LinearLayout android:background="#fd7c7c" android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/Rl_top"> <ImageView android:id="@+id/ImageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imageView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> </LinearLayout> </RelativeLayout> </LinearLayout>