1.注意自定义PopupWindow的构造函数,就行了

public MenuWindow(Context context, IMenuItemOnClickListener onClickListener) {
        // 继承基类的构造函数很重要,基类已经帮你实现好了Back键的监听,已经边框阴影效果
        super(context);
        this.mContext = context;
        this.mItemOnClickListener = onClickListener;
        
        mInflater = LayoutInflater.from(mContext);
        final View view = mInflater.inflate(R.layout.menu_window, null);
        setContentView(view);
        setupViews(view);
        
        // 必须设置宽高
        setWidth(LayoutParams.FILL_PARENT);
        setHeight(LayoutParams.WRAP_CONTENT);
        
        
        //====== 如果不继承PopupWindow的构造函数,可以试一下以下代码,可以实现监听Back键
        // 如果设置setBackgroundDrawable,onTouch监听事件不启用,
        // OutsideTouchable不启用,OnKey的KEYCODEY_BACK不启用;
        // 如果没有设置,OutsideTouchable启用,OnTouch启用。
        //setBackgroundDrawable(new BitmapDrawable()); 
        
        // 必须设置,不然OnKey监听事件不启用,不响应
//        view.setFocusableInTouchMode(true);
//        view.setOnKeyListener(mPlayListLvKeyListener);
//        view.setOnTouchListener(mOnTouchListener);
        // 必须设置,不然OnKey监听事件只能被父窗口拦截
        /////////////////////////////////////////////////
        
        setFocusable(true);
        // 设置PopupWindow的弹出动画
        setAnimationStyle(R.style.animation_playlist_popup);
    }


2.另外,如果继承基类,完全可以用setTouchInterceptor监听按键事件,但要setFocusable(true);

 

转载请注明出处:http://www.cnblogs.com/hpboy

相关文章:

  • 2022-12-23
  • 2021-12-08
  • 2021-05-27
  • 2022-12-23
  • 2021-12-12
  • 2021-10-07
  • 2021-06-30
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2021-08-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案