分配给未显示在屏幕中央的按钮的上下文菜单
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
。
我有一个 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
。