java - 在 android studio 中定位弹出菜单
问题描述
我的应用程序右上角有我的按钮 (btnLogout)。当我按下它时,我希望弹出菜单从右上角显示。现在它在屏幕中间弹出。我发现了类似的问题,但我无法正确使用重力。
这是我的代码:
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popupMenu = new PopupMenu(MainActivity.this, button,Gravity.LEFT);
popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.loggout) {
Intent myintent = new Intent(MainActivity.this, Innlogg.class);
startActivity(myintent);
return false;
}
if (id == R.id.privacy) {
Intent myWebLink = new Intent(android.content.Intent.ACTION_VIEW);
myWebLink.setData(Uri.parse("https://www.bi.edu/about-bi/privacy-policy-and-cookies"));
startActivity(myWebLink);
}
return true;
}
});
popupMenu.show();
}
}); ```
解决方案
//allows you to set PopupMenu to the specified coordinates
private void show(Activity pActivity, float x, float y)
{
final ViewGroup root = (ViewGroup)
pActivity.getWindow().getDecorView().findViewById(android.R.id.content);
final View view = new View(context);
view.setLayoutParams(new ViewGroup.LayoutParams(1, 1));
view.setBackgroundColor(Color.TRANSPARENT);
root.addView(view);
view.setX(x);
view.setY(y);
PopupMenu menu = new PopupMenu(context, view, Gravity.CENTER);
menu.setOnDismissListener(new PopupMenu.OnDismissListener()
{
@Override
public void onDismiss(PopupMenu menu)
{
root.removeView(view);
}
});
menu.show();
}
推荐阅读
- mysql - 将子查询转换为联接?
- css - VSCode Prettier 不格式化 CSS
- selenium - 如何使用 Python 填写 JavaScript 表单?
- swift - 我正在尝试使用 CoreBluetooth 模块,但我的部分代码没有运行
- javascript - Javascripts:无法读取未定义的属性“toLowerCase”
- r - 将用分号划定的两列分隔为行 (R)
- linux-kernel - ubiattach 失败,坏块太多
- google-apps-script - 如何将Web App 中标签中使用的图像限制为“公司内的任何人”?
- uwp - 使用 x:Bind 绑定时 UWP 没有元素内容或文本
- python - 下标汤对象的