1、新建一个类BasePopupWindow,继承PopupWindow,重写其几个方法
public abstract class BasePopupWindow extends PopupWindow {
protected View mContentView;
public BasePopupWindow(){
super();
}
public BasePopupWindow(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
}
public BasePopupWindow(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BasePopupWindow(Context context) {
super(context);
}
public BasePopupWindow(int width, int height) {
super(width, height);
}
public BasePopupWindow(View contentView, int width, int height,
boolean focusable) {
super(contentView, width, height, focusable);
}
public BasePopupWindow(View contentView) {
super(contentView);
}
public BasePopupWindow(View contentView, int width, int height){
super(contentView, width, height, true);
mContentView = contentView;
setFocusable(true);
setOutsideTouchable(true);
// setAnimationStyle(R.style.Popup_Animation_Alpha);
setBackgroundDrawable(new ColorDrawable());
setTouchable(true);
initViews();
initEvents();
}
public abstract void initViews();
public abstract void initEvents();
public View findViewById(int id) {
return mContentView.findViewById(id);
}
}
2、再创建一个类继承BasePopupWindow,把你所需求的下拉菜单布局xml定义好后,设置在该类里,并把可控件初始化、设置监听事件等。
下拉菜单布局 popup_windown_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:background="@drawable/main_navigation_background"
android:orientation="vertical"
android:baselineAligned="false"