单击按钮后Android打开上下文菜单

时间:2011-04-13 06:26:22

标签: android listview android-contextmenu

我想在单击按钮时打开上下文菜单,但是当我单击按钮时,我还必须知道哪个列表项是聚焦的。你知道怎么做吗? onclick方法中的代码应该是什么?

4 个答案:

答案 0 :(得分:59)

我一直在寻找相同的内容,并发现不应使用上下文菜单,而应使用Dialogs

final CharSequence[] items = {"Red", "Green", "Blue"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
});
AlertDialog alert = builder.create();
alert.show();

http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog

答案 1 :(得分:25)

如果你真的想以任何理由这样做......(在我的情况下,出于懒惰)

在您的onCreate活动期间或用户可以触摸按钮之前的某个位置,请在该按钮上执行registerForContextMenu。然后在onClick处理程序的实际按钮中,调用openContextMenu(View)

例如,我有一个在xml中声明的按钮,如

<Button
    android:id="@+id/btn_help"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onHelp"
    android:text="@string/help_btn_text" />

在我的onCreate

registerForContextMenu(findViewById(R.id.btn_help));

和onHelp函数

public void onHelp(View v) {
    openContextMenu(v);
}

这是有效的,因为View v与为上下文菜单注册的视图相同。

答案 2 :(得分:4)

首先,您应该通过调用 registerForContextMenu(视图视图)来注册视图。其次,覆盖 onCreateContextMenu()以添加菜单,最后覆盖 onContextItemSelected()以在每个菜单上放置逻辑。

答案 3 :(得分:1)

首先,您应该知道为什么要使用ContextMenu。 View的ContextMenu功能类似于PC上的右键菜单,这意味着某些项目的“可用操作”。

根据你的描述,我认为你真正需要的是一个带有列表的自定义对话框,单击按钮时会显示,并且还能够获得你{{1 }}。然后,您可以为某些真正需要菜单的视图保存ListView的注册:)