首页 > android popupwindow showAsDropDown 为何offsetx无效,offsety有效

android popupwindow showAsDropDown 为何offsetx无效,offsety有效

这是我的代码:

public class CustomPopUpWindowOfAdd extends PopupWindow {
    private Context mContext;
    private PopupWindow popupWindow;
    private RelativeLayout anchorView;
    @InjectView(R.id.store_rippleView)
    LayoutRipple store_ripple;
    @InjectView(R.id.scan_rippleView)
    LayoutRipple scan_ripple;
    @InjectView(R.id.manually_rippleView)
    LayoutRipple manually_ripple;


    public CustomPopUpWindowOfAdd(Context context, RelativeLayout  anchorView){
        super(context);
        this.mContext = context;
        this.anchorView = anchorView;
       View view = LayoutInflater.from(mContext).inflate(R.layout.add_menu, null);
        setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
        setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.menu_shape));
       setContentView(view);
        setFocusable(true);
        setTouchInterceptor(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                    dismiss();
                    return true;
                }
                return false;
            }
        });
       ButterKnife.inject(this,view);
        initViewAction();
//       popupWindow = new PopupWindow(view);
    }
    private void initViewAction(){
        store_ripple.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AVAnalytics.onEvent(mContext, "openStore");
//
                mContext.startActivity(new Intent(mContext, WebAppStoreActivity.class));
                dismiss();
            }
        });
        scan_ripple.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mContext.startActivity(new Intent(mContext, BarCodeScanActivity.class));
                dismiss();
            }
        });
        manually_ripple.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               mContext.startActivity(new Intent(mContext, ManuallyAddActivity.class));
                dismiss();
            }
        });
    }
    public void show(){
        LogUtil.i("show window");
        int offsetX = Utils.dpToPx(-148,mContext.getResources());
        int offsetY = Utils.dpToPx(-48,mContext.getResources());
        showAsDropDown(anchorView, offsetX, offsetY);
    }


}

无论我offsetX设置什么值,他显示都是靠右边屏幕


很简单,showAsDropDown显示的点是以anchorView左下角点为参照点.
改为

showAsDropDown(anchorView,-anchorView.getWidth()-offsetX,-offsetY);
【热门文章】
【热门文章】