在Android中打开浮动菜单(上下文菜单)?

Moh*_*mad 4 android android-menu android-contextmenu

我创建了一个名为drmenu.xml的新菜单.当我按下菜单按钮时它可以正常工作,但我需要在用户按下按钮时打开上下文菜单.下面的代码按钮只显示吐司.

这是我的xml布局:

 <LinearLayout
        android:id="@+id/MenuCall"
        android:layout_width="90dip"
        android:layout_height="match_parent"
        android:gravity="right|center_vertical" >
        <ImageView
            android:id="@+id/MenuCall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/imageiew6" />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是我的java代码:

    final LinearLayout callback_var = (LinearLayout) findViewById(R.id.MenuCall);
    registerForContextMenu(callback_var);
    callback_var.setOnClickListener(new android.view.View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "this is repeated",      Toast.LENGTH_LONG).show();
            openContextMenu(callback_var);
        }
Run Code Online (Sandbox Code Playgroud)

GVi*_*i82 6

如果要创建上下文菜单,则必须调用方法registerForContextMenu()向其传递应与上下文菜单关联的View.

例如,假设将上下文菜单与Button关联:

Button button = (Button) findViewById(R.id.my_button);
registerForContextMenu(button);
Run Code Online (Sandbox Code Playgroud)

可以在Activity的onCreate()中调用.然后,在同一个活动中,您需要覆盖该onCreateContextMenu()方法.

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_context_menu, menu);
}
Run Code Online (Sandbox Code Playgroud)

然后你必须实现onContextItemSelected(),以便在按下上下文菜单中的项目时触发正确的操作:

@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.first_action:
            // your first action code
            return true;
        case R.id.second_action:
            // your second action code
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,长按单击按钮可打开您在your_context_menu.xml文件中定义的上下文菜单.

考虑通过长按打开上下文菜单符合Android标准UI,但是如果您想要在简单的点击上显示上下文菜单,您可以在这里看到答案

注: 正如说在这里

ID在整个树中不一定是唯一的,但它在您正在搜索的树的部分内应该是唯一的(通常可能是整个树,因此最好在可能的情况下完全唯一).