android popupwindow showAsDropDown 为何offsetx无效,offsety有效
怪我咯
怪我咯 2017-04-17 13:05:16
0
1
451

这是我的代码:

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设置什么值,他显示都是靠右边屏幕

怪我咯
怪我咯

走同样的路,发现不同的人生

reply all (1)
小葫芦

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

showAsDropDown(anchorView,-anchorView.getWidth()-offsetX,-offsetY);
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!