Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当用户在android中按下菜单按钮后出现菜单时,如何添加视图?_Android - Fatal编程技术网

当用户在android中按下菜单按钮后出现菜单时,如何添加视图?

当用户在android中按下菜单按钮后出现菜单时,如何添加视图?,android,Android,在默认的Android web浏览器中,当用户单击“菜单”按钮时,菜单图标从底部向上滑动,地址栏从顶部向上滑动。有人会如何实现类似的东西。更具体地说,当用户按下菜单按钮后出现菜单时,如何添加视图?您可以覆盖onKeyDown功能,将您自己的代码添加到if,使用菜单按钮作为参数,然后触发super的onKeyDown功能(如中所示,始终触发该功能,但仅在键为“菜单”时触发代码)您需要覆盖onKeyDown方法: @Override public boolean onKeyDown(int keyC

在默认的Android web浏览器中,当用户单击“菜单”按钮时,菜单图标从底部向上滑动,地址栏从顶部向上滑动。有人会如何实现类似的东西。更具体地说,当用户按下菜单按钮后出现菜单时,如何添加视图?

您可以覆盖
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: