分配给未显示在屏幕中央的按钮的上下文菜单

Context Menu assigned to a button not displayed at center of screen

我有一个 ContextMenu 分配给了一个按钮 button_home,它让用户可以从列表中选择 select。一切正常,但菜单没有显示在屏幕中央,而是锚定到视图(按钮旁边),如下图所示。

我的代码如下:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        button = findViewById(R.id.button_home);
        registerForContextMenu(button);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        if (v.getId()==R.id.button_home){
            this.getMenuInflater().inflate(R.menu.my_contex_menu, menu);
        }
    }
@Override
public boolean onContextItemSelected(MenuItem item) {
    int selectedItemId = item.getItemId();
    switch (selectedItemId){
        case R.id.typeDesktop:
            mBrowserType = "Desktop";
            break;
        case R.id.typeEdge:
            mBrowserType = "Edge";
            break;
    } return super.onContextItemSelected(item);
}

为什么我的ContextMenu没有显示在屏幕中央?

我发现另一个 post 有类似的问题,但似乎还没有人回答!

我的问题的简单答案是"NO",这是不可能的。

是的,ContextMenu 通常会显示在屏幕中央,但是当您将它分配给 Button 或特定视图(如我的情况)时,它会显示在不是主视图(屏幕)的那个视图的中心。

由于按钮的视图仅限于按钮大小,ContextView 应该显示在该视图的中心,但由于没有足够的剩余空间,它显示为锚定到按钮.

P.S:我最终使用了 AlertDialog