当用户在android中按下菜单按钮后出现菜单时,如何添加视图?
在默认的Android web浏览器中,当用户单击“菜单”按钮时,菜单图标从底部向上滑动,地址栏从顶部向上滑动。有人会如何实现类似的东西。更具体地说,当用户按下菜单按钮后出现菜单时,如何添加视图?您可以覆盖当用户在android中按下菜单按钮后出现菜单时,如何添加视图?,android,Android,在默认的Android web浏览器中,当用户单击“菜单”按钮时,菜单图标从底部向上滑动,地址栏从顶部向上滑动。有人会如何实现类似的东西。更具体地说,当用户按下菜单按钮后出现菜单时,如何添加视图?您可以覆盖onKeyDown功能,将您自己的代码添加到if,使用菜单按钮作为参数,然后触发super的onKeyDown功能(如中所示,始终触发该功能,但仅在键为“菜单”时触发代码)您需要覆盖onKeyDown方法: @Override public boolean onKeyDown(int keyC
onKeyDown
功能,将您自己的代码添加到if
,使用菜单按钮作为参数,然后触发super的onKeyDown
功能(如中所示,始终触发该功能,但仅在键为“菜单”时触发代码)您需要覆盖onKeyDown方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// Add Views here
}
return super.onKeyDown(keyCode, event);
}
如果不希望菜单显示正常,则在//此处添加视图
后返回true,表示您已处理按键操作
就添加视图而言,您可以对已经在XML中定义的布局使用LayoutFlater:
LayoutInflater inflater = (LayoutInflater) getLayoutInflater();
ViewGroup viewGroup = (ViewGroup) findViewById(R.id.someviewgroup);
// Add an inflated view directly to a ViewGroup
inflater.inflate(R.layout.whateverlayout, viewGroup);
// Or inflate a view and then add it to a ViewGroup later
View someInflatedView = inflater.inflate(R.layout.whateverlayout, null);
viewGroup.addView(someInflatedView);
或者,您可以使用代码创建视图并添加它:
ImageView someImageView = new ImageView(this);
someImageView.setImageDrawable(someDrawable);
someImageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
ViewGroup viewGroup = (ViewGroup) findViewById(R.id.someviewgroup);
viewGroup.addView(someImageView);
您可以使用OnPepareOptions菜单。它会在菜单显示之前被调用
问题在于,一旦用户显示菜单,并且“我的自定义视图”也出现,用户就必须单击添加的视图两次与它们交互。一次放弃菜单,另一次与新创建的视图交互,这不是它在浏览器中的工作方式。此外,在显示菜单时按“后退”菜单不会放弃新创建的视图。谢谢,但我在上一个答案中添加的注释仍然有效。菜单将位于其他所有内容之上,用户仍必须通过单击“上一步”或在菜单区域外触摸来放弃它。此外,按“上一步”按钮不会放弃新创建的视图。请查看浏览器源,尤其是MFakeTileBar: