1

我有一个带有TextView图像图标的活动。我已经通过覆盖为图像图标创建了上下文菜单onCreateContextMenu()

但是,我还想为TextView. 但是,我注意到我已经在使用onCreateContextMenu()

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);  
    menu.setHeaderTitle(getString(R.string.option1));  
    menu.add(0, v.getId(), 0, getString(R.string.option2));  
    menu.add(0, v.getId(), 0, getString(R.string.options3));  
}

因此,是否可以为TextView?

4

2 回答 2

3

您可以使用onCreateContextMenu中传递的 View 对象来确定菜单的所有者并相应地填充菜单。

您的代码应如下所示:

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);  
        switch (v.getId()) {
          case R.id.imageIconId:
             menu.setHeaderTitle(getString(R.string.option1));  
             menu.add(0, v.getId(), 0, getString(R.string.option2));   
             menu.add(0, v.getId(), 0, getString(R.string.options3));  
           break;
          case R.id.textViewid:
            // do whatever you want with the menu object.
           break;
}
    }   
于 2013-03-02T17:07:44.030 回答
2

通过该方法传递给您的参数将帮助您分支到不同的事物。

这是一个例子:

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);
        if( v.equals(yourImgView) ){
            menu.setHeaderTitle(getString(R.string.option1));  
            menu.add(0, v.getId(), 0, getString(R.string.option2));  
            menu.add(0, v.getId(), 0, getString(R.string.options3));  
        }else if ( v.equals(yourTxtView) ) {
            //Do your textView things.
        }

    } 
于 2013-03-02T17:09:17.623 回答