效果图
popup_window_addition.xml
AdditionPopupWindow.java
package com.bu_ish.popup_window_example;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.PopupWindow;public class AdditionPopupWindow extends PopupWindow { public AdditionPopupWindow(Context context) { setWidth(LinearLayout.LayoutParams.WRAP_CONTENT); setHeight(LinearLayout.LayoutParams.WRAP_CONTENT); setBackgroundDrawable(new ColorDrawable()); setOutsideTouchable(true); View view = LayoutInflater.from(context).inflate(R.layout.popup_window_addition, null); setContentView(view); }}
MainActivity.java
package com.bu_ish.popup_window_example;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.addImageView).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AdditionPopupWindow popupWindow = new AdditionPopupWindow(MainActivity.this); popupWindow.showAsDropDown(v); } }); }}
注意
要想点击外部关闭PopupWindow,必须调用setBackgroundDrawable(Drawable)和setOutsideTouchable(boolean)
完整Demo链接:,提取码:sluz