我卡在弹出窗口定位。我点击一个按钮来显示我的弹出窗口。我希望它应该根据可用空间进行定位。另外,如果我的按钮位于中心,它应该在按钮下方。下面是我的这个东西的代码。请让我知道我错在哪里。谢谢。在Android中正确定位弹出窗口
mBtnPopUp.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
ListView mListView = (ListView) mPopUpView.findViewById(R.id.pop_up_list_view);
mListView.setAdapter(mPopupListAdapter);
Drawable drawable = getResources().getDrawable(android.R.drawable.alert_light_frame);
mPopupWindow.setBackgroundDrawable(drawable);
// mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
showLikeQuickAction(0, 0);
mPopupWindow.showAsDropDown(mBtnPopUp);
}
});
mPopupWindow.setOutsideTouchable(true);
public void showLikeQuickAction(int xOffset, int yOffset)
{
int[] location = new int[2];
mBtnPopUp.getLocationOnScreen(location);
Rect anchorRect = new Rect(location[0], location[1], location[0] + mBtnPopUp.getWidth(), location[1] + mBtnPopUp.getHeight());
mBtnPopUp.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int rootWidth = mBtnPopUp.getMeasuredWidth();
int rootHeight = mBtnPopUp.getMeasuredHeight();
@SuppressWarnings("deprecation")
int screenWidth = mWindowManager.getDefaultDisplay().getWidth();
int xPos = screenWidth - rootWidth + xOffset;
int yPos = anchorRect.top - rootHeight + yOffset;
if(rootWidth > anchorRect.right - anchorRect.left)
{
// right
xPos = anchorRect.right - rootWidth;
}
else
{
// left
xPos = anchorRect.left + 15;
}
if(xPos + rootWidth > screenWidth)
xPos = screenWidth - rootWidth - 20;
// display on bottom
if(rootHeight > anchorRect.top)
{
yPos = anchorRect.bottom + yOffset;
// mPopupWindow.setAnimationStyle(R.style.Animations_GrowFromTop);
}
mPopupWindow.showAtLocation(mBtnPopUp, Gravity.NO_GRAVITY, xPos, yPos);
}
谢谢。
已经得到这个问题的解决?如果是,请提供给我解决方案 – 2013-11-11 06:04:52
你有解决方案吗? – Dory 2013-12-12 04:54:29