获取Activity的content view

调用PopupWindow的showAtLocation方法时,第一个参数总是很让人困惑

获取Activity的content view_第1张图片
Paste_Image.png

a parent view to get the {@link android.view.View#getWindowToken()} token from

这个view是要能获取到window唯一标识的(也就是只要能获取到window 标示,view是什么控件都可以),应该是标示这个popupWindow添加到哪个window里面,对控制popupWindow出现位置没有影响。

这时候,如果作为一个封装出来的通用组件,这个参数是不是就可以随便传呢?

public void show(View parent){
        showAtLocation(parent, Gravity.TOP | Gravity.RIGHT, 0, ViewUtil.dp2px(mContext, 485));
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if(isShowing()){
                    dismiss();
                }
            }
        }, SHOWING_TIME);
    }

更无奈的是,调用的时候随便传就随便传吧,如果我是在一个最抽象的BaseFragmentActivity里面调用这个方法,这个Activity里面什么具体View都没有,我又该传什么呢?幸好,设计完善的android框架可以为我们提供Activity的content view,这个view是所有实际显示View的顶层:

View rootView = findViewById(android.R.id.content);

这时候把rootView传进去就可以了。

你可能感兴趣的:(获取Activity的content view)